segmentfault官方|为 Express 开外挂( 五 )
另外 OvernightJS 共提供了三个库:
- OvernightJS/core:核心库;
- OvernightJS/logger:日志记录工具库;
- OvernightJS/jwt:JWT 库;
2. OvernightJS/core 快速上手
2.1 安装 OvernightJS/core
$ npm install --save @overnightjs/core express
$ npm install --save-dev @types/express
2.2 OvernightJS/core 示例代码
首先介绍下我们示例代码需要实现的功能:
- UserController 类 , 负责管理业务逻辑的控制器;
- ServerController 类 , 负责管理服务逻辑的控制器;
- 执行服务启动;
import { Controller, Get, Server } from '@overnightjs/core';
import { Request, Response } from 'express';
import * as bodyParser from 'body-parser';
const port = 3000;
第二步 , 实现 UserController 类:
@Controller( '/users')
class UserController {
@Get( '/:id')
private get(req: Request, res: Response) {
returnres.send(`hello, your id is: ${req.params.id}`)
}
@Get( '/list')
private getList(req: Request, res: Response) {
returnres.send([
{name: "leo", age: 17},
{name: "robin", age: 19}
])
}
}
在声明 UserController 类时 , 使用 OvernightJS/core 的 @Controller 装饰器 , 使用 "/users" 路径作为参数 , 作用是为当前路由控制器指定一个路由地址 , 可以理解为这组路由的“根路径” , 该类中实现的所有接口路径 , 都会以该“根路径”为基础 。
然后在UserController 类中 , 通过 OvernightJS/core 提供 @Get 装饰器 , 分别使用 "/:id" 和 "/list" 路径作为参数 , 绑定路由 。
最终 UserController 类实现的路由地址包括:
- /user/:id
- /users/list
class ServerController extends Server {
constructor{
super;
this.app.use(bodyParser.json);
super.addControllers(new UserController);
}
public start(port?: number): void {
this.app.listen(port, => {console.log( '启动成功 , 端口号:',port)});
}
}
ServerController 类继承 OvernightJS/core 提供的 Server 类 , 通过在构造函数中调用 super.addControllers(new UserController) 来实现将前面声明好的路由控制器类 , 添加到OvernightJS/core 统一管理的控制器数组中 。
另外在该类中 , 我们还声明 start 方法 , 用来启动服务器 。
第四步 , 实现启动服务器逻辑:
const server = new ServerController;
server.start(port);
这里启动服务器就相当简单咯~~
整个实现示例代码的流程如下:
声明了两个类:UserController 和 ServerController, 分别为业务逻辑的控制器和服务逻辑的控制器 , 最后在主入口中去实例化 , 并执行实例化结果的 start 方法启动服务 。
最后完整代码如下:
import { Controller, Get, Server } from '@overnightjs/core';
import { Request, Response } from 'express';
import * as bodyParser from 'body-parser';
const port = 3000;
@Controller( 'users')
推荐阅读
- 蝌蚪五线谱官方|云游杂记·琥珀屋丨杨枫【科幻微小说】
- 旅游那点事|史上最弯!一加8T官方宣布美背照:沾水会变色
- 症状|中国发布丨官方提醒公众旅行归来自我观察14天 有症状及时告知旅行史
- 深圳特区报官方微博|刚刚,诺贝尔文学奖揭晓!是她!
- 湖南经视官方账号|国庆长假期间湖南机场日均客流超过10万人次
- 官方|唐朝时的官方外交名是“大唐”,那清朝的是啥?说出来你可能不信
- 杂志之旅官方|“丧文化”大行其道,当代年轻人为何越来越厌世?
- 实用心理学官方号|心理学:不完美,也配好好活。时间不语,却回答了所有问题
- 趣头条|凯迪拉克发布官方草图,未来凯迪拉克SUV外观设计出炉
- 飞度|东本也要卖“飞度”了,本田LIFE胜算有多大?
