轻量级 Node.js Web 框架 Daruk2.0 正式版发布了!

时间:2022-07-25
本文章向大家介绍轻量级 Node.js Web 框架 Daruk2.0 正式版发布了!,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

推荐一个开源的轻量级 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是你一个很好的起点和开始。

npm add daruk ts-node typescript

安装完毕后,配置 tsconfig 文件:

{
  "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 服务:

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:

{
  "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。