<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          daruka node.js web framework based on typescript

          聯(lián)合創(chuàng)作 · 2023-09-21 12:56

          daruk web framework for nodejs


          NPM version build status PR's Welcome GitHub closed issues npm codecov GitHub top language GitHub code size in bytes Package Quality All Contributors GitHub last commit (branch) Gitter start with why GitHub language count APM Build Status

          Daruk

          Daruk 是一款基于 Koa2,使用 Typescript 開發(fā)的輕量級 web 框架。Daruk 的初衷是讓人們可以更方便的開發(fā) Nodejs Web 應(yīng)用并能夠體會到 Typescript 編程的樂趣。Daruk 本身基于 100%基于 Typescript 開發(fā),使用 inversifyjs 的 IoC 容器管理依賴,讓開發(fā)者享受最佳的 OOP 和 IoC 的編程體驗(yàn)。

          框架內(nèi)部集成了許多方便靈活的裝飾器函數(shù),讓開發(fā)者可以寫更少的代碼來完成更多的事情,Daruk2.0 更改了之前嚴(yán)格要求目錄約定的范式,提供給開發(fā)者更靈活的操作空間來進(jìn)行項(xiàng)目約束和編寫,但是內(nèi)置的功能并沒有缺失,整個框架的開發(fā)能力和 Daruk1.0 能力持平。

          比如在 Daruk2.0 中,我們可以使用裝飾器來快速定義 service,controller,timer,middleware 等能力來編寫 web 應(yīng)用,且提供了一些基本的內(nèi)置中間件和路由服務(wù)等,更靈活的定義,讓 Daruk2.0 可以更靈活的定制你的 web 項(xiàng)目和編寫測試腳本。

          Daruk 來源自塞爾達(dá)傳說曠野之息里的四英杰之一,擁有在周圍張開結(jié)界保護(hù)自己的力量,框架的目的也是為了給 nodejs server 提供健壯的基礎(chǔ)管理能力。

          Daruk2.0 同樣基于 koa2,目前包含以下核心功能:

          • 開啟裝飾器配置,ts 環(huán)境下引入即用,無需腳手架等工具。
          • 提供給開發(fā)者編寫影響框架內(nèi)部能力的插件機(jī)制
          • 可以自定義目錄結(jié)構(gòu),在啟動時使用 API 加載你自己定義的源文件
          • 完整的 typescript 開發(fā)體驗(yàn)
          • 服務(wù)啟動完整生命周期 hook
          • 自定義(性能日志 & 業(yè)務(wù)日志) 染色功能
          • 支持線上實(shí)時性能分析
          • 輕量級的鏈路追蹤
          • 面向?qū)ο蟮?mvc 開發(fā)體驗(yàn)
          • 配套的一些周邊模塊

          Installation & Quick start

          安裝

          mkdir daruk-demo
          cd daruk-demo
          npm init
          npm add daruk ts-node typescript
          mkdir src
          touch src/index.ts

          開始編寫 web 應(yīng)用 src/index.ts

          import { DarukServer, controller, get, DarukContext } from 'daruk';
          
          (async () => {
            const myapp = DarukServer();
          
            @controller()
            class Index {
              @get('/')
              public async index(ctx: DarukContext) {
                ctx.body = 'hello world';
              }
            }
          
            await myapp.binding();
            myapp.listen(3000);
          })();

          創(chuàng)建編譯時的 tsconfig.json 文件

          touch tsconfig.json
          {
            "compileOnSave": true,
            "compilerOptions": {
              "target": "es2017",
              "module": "commonjs",
              "sourceMap": true,
              "outDir": "./build",
              "rootDir": "./src",
              "typeRoots": [],
              "types": [],
              "experimentalDecorators": true,
              "emitDecoratorMetadata": true
            },
            "exclude": ["node_modules"],
            "include": ["./src/**/*.ts"]
          }

          編輯 package.json 的啟動和編譯腳本

          {
            "scripts": {
              "dev": "NODE_ENV=dev ts-node --project tsconfig.json --files src/index.ts",
              "build": "tsc"
            }
          }

          啟動服務(wù)

          npm run dev
          > NODE_ENV=dev ts-node --project tsconfig.json --files src/index.ts
          [2020-9-1 19:52:12] [debug] [init] [router] get - /

          打包腳本并啟動編譯后的腳本

          npm run build
          node build/index.js

          Docs

          查看 Daruk 文檔快速開始吧! TypeDoc 則可以從這里開始 API DOC吧!

          Example

          查看實(shí)際的 web 服務(wù)例子 example

          daruk-demo

          使用騰訊云應(yīng)用一鍵部署:

          How to Contribute

          Please let us know how can we help. Do check out issues for bug reports or suggestions first.

          To become a contributor, please follow our contributing guide

          Some companies using Daruk

          Contributors

          Thanks goes to these wonderful people (emoji key):


          xiaojue

          ?? ??

          whale

          ?? ??

          imakan

          ??

          cuzz

          ?? ??

          擴(kuò)散性百萬甜面包

          ?? ??

          arck.liu

          ?? ??

          Manjusaka

          ??

          KenyeeCheung

          ??

          ChasLui

          ??

          木杉

          ??

          icepy

          ??

          jeffjing

          ??

          yiliang

          ??

          imakan

          ??

          WangHan

          ??

          zuigzm

          ?? ??

          南北

          ?? ??


          ?? ??

          This project follows the all-contributors specification. Contributions of any kind welcome!

          瀏覽 10
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  香蕉啪啪视频 | 久久高清一区二区三区 | 呜呜视频网站在线观看 | 黑丝3级黄片 | 欧美日韩男男 |