其他分享
首页 > 其他分享> > 从小白角度带你入门Daruk-1

从小白角度带你入门Daruk-1

作者:互联网

1.介绍

Daruk 是一款基于 Koa2,使用 Typescript 开发的轻量级 web 框架。Daruk 的初衷是让人们可以更方便的开发 Nodejs Web 应用并能够体会到 Typescript 编程的乐趣。Daruk 本身基于 100% 基于 Typescript 开发,使用 inversifyjs 的 IoC 容器管理依赖,让开发者享受最佳的 OOP 和 IoC 的编程体验。

一些基本概念:

koa:nodejs最权威的http模块之一,另一个是express

Typescript:js的超集,和js很像,可以参考这篇博客:小白入门typescript

IoC(Inversion of Control):字面意思是控制反转,具体定义是高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。

举个例子:
类 A 直接依赖类 B,假如要将类 A 改为依赖类 C,则必须通过修改类 A 的代码来达成。这种场景下,类 A
一般是高层模块,负责复杂的业务逻辑;类 B 和类 C 是低层模块,负责基本的原子操作;假如修改类 A,会给程序带来不必要的风险。
解决方案:将类 A 修改为依赖接口 I,类 B 和类 C 各自实现接口 I,类 A 通过接口 I 间接与类 B 或者类 C
发生联系,则会大大降低修改类 A 的几率。

InversifyJs是一个轻量级的IoC容器,使用类构造函数来标识并注入其依赖项。
简单的理解,就是之前我们对类的使用和继承会相互引用嵌套,小项目还可以,但是一旦项目大一点,使用的类和依赖多一点,维护或修改起来就会非常麻烦。而InversifyJs会将我们所有的类(当然不仅仅只有类)全部放进container中进行统一维护。

DI:依赖注入(Dependency Injection其实和 IoC 是同根生,这两个原本就是一个东西,只不过由于控制反转概念比较含糊(可能只是理解为容器控制对象这一个层面,很难让人想到谁来维护对象关系),所以 2004 年大师级人物 Martin Fowler 又给出了一个新的名字:“依赖注入”。
类 A 依赖类 B 的常规表现是在 A 中使用 B 的 instance。


Daruk框架内部集成了许多方便灵活的装饰器函数,让开发者可以写更少的代码来完成更多的事情,Daruk2.0 更改了之前严格要求目录约定的范式,提供给开发者更灵活的操作空间来进行项目约束和编写,但是内置的功能并没有缺失,整个框架的开发能力和 Daruk1.0 持平。

比如在 Daruk2.0 中,我们可以使用装饰器来快速定义 service,controller,timer,middleware 等能力来编写 web 应用,且提供了一些基本的内置中间件和路由服务等,更灵活的定义,让 Daruk2.0 可以更灵活的定制你的 web 项目和编写测试脚本。

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

2.安装

2.1 安装node环境

可通过 NodeJs 官网进行适合自己环境的安装 node官网

2.2 安装Daruk框架和ts开发环境

在终端运行下面的代码

mkdir daruk-demo # 创建项目目录
cd daruk-demo # 进入项目目录
npm init # 使用 npm 初始化项目信息
npm install daruk ts-node typescript # 安装 Daruk 框架和 typescript
mkdir src # 创建源码目录
touch src/index.ts # 创建入口文件
touch tsconfig.json # 创建 typescript 的项目配置文件

2.3 编写web应用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);
})();

2.4 编写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"]
}

2.5 编辑package.json的启动和编译脚本

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

只要将dev和build那两行代码加入package.json中的script对象之中就好

2.6 启动Daruk服务(sh)

npm run dev

2.7 在线例子

可以查看这里完整的项目事例:Daruk-demo

3.总结

此次的博客简单介绍了下daruk和一些相关知识,以及daruk的安装教程,接下来会接着介绍一些项目启动以及装饰器方面的知识。

资料来源:Daruk官网
欢迎大家star,鼓励一下国产框架hhh

标签:daruk,依赖,入门,从小,ts,Daruk,typescript,src
来源: https://blog.csdn.net/JakeMa1024/article/details/110472344