Application

Application 是全局应用对象,在一个应用中 只会实例化一个,它集成子 koa.application 在它上面我们可以挂载一些全局的方法和对象,我们可以轻松的插件或者应用中扩展application 对象

事件

在框架运行时,会在 Application 实例上触发一些事件,应用开发者或者插件开发者可以监听这些事件做一些操作。作为应用开发者,我们一般会在启动自定义脚本中进行监听。

  • server: 该事件一个 worker 进程只会触发一次,在 HTTP 服务完成启动后,会将 HTTP server 通过这个事件暴露出来给开发者。
  • error: 运行时有任何的异常被 onerror 插件捕获后,都会触发 error 事件,将错误对象和关联的上下文(如果有)暴露给开发者,可以进行自定义的日志记录上报等处理。
  • requestresponse: 应用收到请求和响应请求时,分别会触发 requestresponse 事件,并将当前请求上下文暴露出来,开发者可以监听这两个事件来进行日志记录。
  1. // app.js
  2. module.exports = app => {
  3. app.once('server', server => {
  4. // websocket
  5. });
  6. app.on('error', (err, ctx) => {
  7. // report error
  8. });
  9. app.on('request', ctx => {
  10. // log receive request
  11. });
  12. app.on('response', ctx => {
  13. // ctx.starttime is set by framework
  14. const used = Date.now() - ctx.starttime;
  15. // log total cost
  16. });
  17. };