推荐一个开源的轻量级 Node.js Web 框架 Daruk,作者 @小爝,文末阅读原文可在 Github 进行关注,正文从下面开始~
Daruk 是一款基于 Koa2,使用 Typescript 开发的轻量级 web 框架。Daruk 的初衷是让人们可以更方便的开发 Nodejs Web 应用并能够体会到 Typescript 编程的乐趣。Daruk 本身 100%基于 Typescript 开发,使用 inversifyjs 的 IoC 容器管理依赖,让开发者享受最佳的 OOP 和 IoC 的编程体验。
Daruk1.0 发布的时候,我们提供了基于 Koa 的约定格式模块加载机制,并使用了 Typescript 来重构了内部的 Daruk 版本,但是我们发现在使用的过程中(1年多)的时间里,按照目录约定和脚手架的开发方式,还是会给开发者带来诸多不便,并且框架并没有那么的 ts 化味道。
所以我们针对上面的问题,在经过使用 InversifyJS 重构后的2.0,今天终于正式发布了。
安装和使用 Daruk2.0会将非常的方便,新手入门也很容易,可以让开发者,尤其是 koa 开发者更方便的体会到 ts 编写后端代码的便利。
如果你没有接触过 nestjs,但是你又想使用 IoC 编程模型来进行后端 nodejs 业务开发,Daruk2.0是你一个很好的起点和开始。
代码语言:javascript复制npm add daruk ts-node typescript
安装完毕后,配置 tsconfig 文件:
代码语言:javascript复制{
"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"]
}
使用 daruk 编写 web 服务:
代码语言:javascript复制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);
})();
编写 npm script:
代码语言:javascript复制{
"scripts": {
"dev": "ts-node --project tsconfig.json --files src/index.ts",
"build": "tsc"
}
}
有哪些更新?
内置了 koa-body,不再需要集成外部中间件。使用 InversifyJS 进行重构,对外暴露大量装饰器对开发者类提供能力。新增内置了多个 request 和 response 链路的方法装饰器。提供了 plugin 插件的机制,内部 build_in 的大部分模块也是基于插件开发的。简化了 API 和目录约定方式,不再依赖 daruk-cli,可以更方便的自己定制脚手架和开发目录。完善了教程文档和 typedoc。