在这里分享一个开源的http框架,它使用javascript语言,支持使用装饰器来创建web服务。
github地址
npm地址
totea
totea是一个基于express的nodejs框架,使用装饰器来定义路由和中间件。特点概述:
- javascript : 现有的使用装饰器的框架都默认使用typescript,totea可以在javascript中使用,只需要引入plugin-proposal-decorators;
- 简单高效 : totea提供了不到20个装饰器函数,却可以支持多种复杂使用场景;
- 易于整合 : totea使用express作为web服务器,我们没有修改任何底层的逻辑,这意味着在express中能使用的方法和插件,也可以在totea中使用。
示例
让我们来创建一个简单的用户服务, 包含user的增删改查,再创建一个二级路由,用于获取user的tag列表。
const { Server, Get, Post, Delete, Put, Middleware, Controller,Params } = require('@totea/core')
// 添加一个二级路由, 名称为tag
@Controller('tag')
class tagController {
@Get('/list') // GET /tag/list
getTag() {}
}
@Server({
port: 4000, // 把端口设置为4000
controller: [tagController] // 把上面创建的控制器注入到服务
})
@Middleware((req, res, next) => { // 添加一个全局中间件
next()
})
class Service {
@Get('/user') // GET /user
getUser() {}
@Get('/user/:id') // GET /user/${id}
@Middleware((req, res, next) => { // 为/user/${id}添加一个私有中间件
next()
})
getUserById({ params }) {}
@Post('/user') // POST /user
insertUser({ body }) {}
@Delete('/user/:id') // DELETE /user/${id}
// 添加一个参数过滤器,req.params.id必须提供且长度为10
@Params(params => params.id && params.id.length === 10)
deleteUserById({ params }) {}
@Put('/user/:id') // PUT /user/${id}
modifyUserById({ params, body }) {}
}
const service = new Service()
service.start()
这就是全部的代码了,是不是很简单?
详细的使用方法,请查看说明文档
安装使用
# 安装 totea
npm i @totea/core
# 安装并配置babel
npm i @babel/core @babel/node @babel/plugin-proposal-decorators
# 如果你的项目已经有babel配置, 把@babel/plugin-proposal-decorators加到你的配置文件中
# 没有的化创建一个babel.config.js文件,写入以下内容
module.exports = {
plugins: [
["@babel/plugin-proposal-decorators", {legacy: true }]
],
};
# 使用babel-node运行你的项目
npx babel-node index.js
License
Copyright (c) 2021-present aim-leo