Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/umajs/umajs-express
It supports express while maintaining the development experience of umajs, which is used to support the old express framework to upgrade umajs
https://github.com/umajs/umajs-express
express expressjs nodejs
Last synced: 8 days ago
JSON representation
It supports express while maintaining the development experience of umajs, which is used to support the old express framework to upgrade umajs
- Host: GitHub
- URL: https://github.com/umajs/umajs-express
- Owner: Umajs
- License: mit
- Created: 2020-12-14T12:19:16.000Z (almost 4 years ago)
- Default Branch: main
- Last Pushed: 2020-12-16T04:46:59.000Z (almost 4 years ago)
- Last Synced: 2024-11-06T08:47:58.833Z (13 days ago)
- Topics: express, expressjs, nodejs
- Language: TypeScript
- Size: 631 KB
- Stars: 3
- Watchers: 4
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# `Umajs-express`
> A easy-to-use framework base on Typescript And to support the old express framework to upgrade umajs## 简介
Umajs-express是针对历史项目为express框架升级Umajs而开发的一个基于Umajs的适配工程,开发者可以将Umajs集成到express项目中。逐步将新工程的路由切换为符合Umajs的开发规范的代码,通过Umajs-express编写的代码后期可以直接无缝将Umajs-express升级成Umajs.
## 使用方法
Umajs-express高度保持Umajs使用方法,使用文档请参考: [Umajs使用文档](https://umajs.github.io)
## 特性
- 支持umajs所有基础功能,所以使用时只需要把`@umajs/core`替换成 `@umajs-express/core`
- 支持`plugin-status`插件之外的所有Umajs已提供插件(中间件使用了async await语法,express错误中间件展示无法捕获到异步函数内的错误,express5.0+后支持)
- 支持自定义中间件从req或者res中获取ctx对象,ctx模拟封装了和koa一致的使用方法和属性。## 和Umajs的区别
- 使用时npm模块命名空间不同,express版本为@umajs-express
- 自定义中间件形式不同,自定义中间件实现方式为express原始中间件模式,接受三个参数`(req,res,next)=>{}`,为了后期快速升级Umajs,建议开发者通过从req对象中获取ctx属性。## Umajs-express版本包括以下模块(用法和Umajs保持一致)
- @umajs-express/core 【单测 100%】
- @umajs-express/router 【单测 100%】
- @umajs-express/path 【单测 100%】
- @umajs-express/arg-decorator 【单测 100%】## 支持的插件(用法和Umajs保持一致)
- @umajs-express/plugin-i18n
- @umajs-express/plugin-session
- @umajs-express/plugin-static
- @umajs-express/plugin-views## demo
```ts
// app.js
import * as express from 'express';
import Uma from '@umajs-express/core';
import { Router } from '@umajs-express/router';
import { TUmaOption } from '@umajs-express/core';const options: TUmaOption = {
Router,
bodyParser: true,
ROOT: __dirname,
env: process.argv.indexOf('production') > -1 ? 'production' : 'development',
};(async () => {
if (process.argv.indexOf('--express') > -1) {
const app = express();app.use(await Uma.middleware(options, app));
app.listen(8058);
} else {const uma = Uma.instance(options);
uma.start(8058);
}
})();
``````ts
// index.controller.ts
import { BaseController, Path, Private, Param, Query, RequestMethod, Aspect, Service, Result } from '@umajs-express/core';
import { Get, Post } from '@umajs-express/path';export default class Index extends BaseController {
@Path('/home')
home() {
this.setHeader('clientType','PC');
console.log(this.ctx.get('Cache-Control'));
return Result.send('this is home router! '+this.getHeader('Cache-Control'));
}
@Get('/reg/:name*')
@Aspect.around('mw')
reg(@Param('name') name: string) {
return Result.send(`this is reg router. ${name}`);
}
}
```