生命周期
加载约定目录相关事件
执行 new Daruk()
后,daruk 会同步地去加载约定目录的,所以要监听加载过程中的事件,一定要在实例化 Daruk 之前:
import { Daruk, DarukEvents } from 'daruk'
DarukEvents.on('configLoaded', (daruk:Daruk) => {
console.log(daruk.config)
})
new Daruk('myapp')
支持的事件有(按触发顺序列出):
configLoaded
darukConfigLoaded
utilLoaded
glueLoaded
serviceLoaded
middlewareLoaded
controllerLoaded
timerLoaded
access 事件
当完用户请求我们的服务,我们的服务响应用户后,会触发 access
事件:
import { DarukEvents, Context } from 'daruk'
DarukEvents.on('access', (ctx:Context) => {
// ctx 中会附带本次请求相关日志和中间件执行耗时信息
console.log(ctx.access_log)
console.log(ctx.middleware_perf)
})
exit 事件
当进程出错退出或重启时会触发 exit 事件,允许你在进程退出时做某些操作:
import { DarukEvents } from 'daruk'
// 如果是报错导致的退出,会存在 error 参数
DarukEvents.on('exit', (err:Error, daruk:Daruk) => {
console.log(err)
})
注意 exit 事件的回调中只能执行同步操作,如果想做异步操作,请参考 Daruk.exitHook