express迁移
对于一些历史项目,我们可以采取逐步升级,将 umajs 集成到 express 项目中。新的接口和逻辑通过 Umajs 来写,然后再慢慢将老的逻辑迁移到 Umajs 中。
Uma.callback
通过 uma.callback 函数可以获取到框架实例化后的 koa.callback.然后采用中间件形式集成到 express,connect 框架中。
接入方式步骤
//app.ts
import { Uma } from '@umajs/core'
import express from 'express'
;(async () => {
const callback = <any>await Uma.callback(options)
const app = express()
/** 老项目中间件加载 **/
// callback在express放到最后一个中间件中
app.use((req, res, next) =>
callback(req, res).then(() => {
if (res.headersSent) return
next()
})
)
})()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
注意事项
1、建议在 umajs 中间件中重置 ctx.status=200 状态码。
2、umajs 中配置的 view 插件和 express 中使用的模板引擎保持一致.或者直接通过插件挂载到 context 和 Result 对象
3、express 老项目中如果有存储的 token 和 session 建议通过 umajs 自定义插件转移到 ctx 后再 uma 逻辑中进行复用
4、在 express 中使用 Umajs 时,Umajs 中间件的执行顺序需要在 express 所有中间件之后,如果之前项目有设置 404 路由需要删掉 404 中间件。
其他方案
对于只想使用 express 框架路线的项目,框架也提供了 express 版本的 Umajs.API 几乎与 Umajs 保持一致,详情查看umajs-express在新窗口中打开