# Express Koa Egg 对比

# Express

开箱即用,封装了 路由 静态服务 bodyparse cookie-parser multiparty express-session

回调函数作为处理

# Koa

没有任何中间件,更轻量,只是对请求,响应,实例和上下文做了封装

执行async await

只是对请求响应上下文和实例做了封装

上下文对 request 和response做了代理处理

没有捆绑中间件。

洋葱模型作为中间件处理方式

app.on('error', err => { log.error('server error', err) });

# Egg

基于koa,统一的目录结构,支持koa的中间件和

统一的路由,中间件,扩展,定时任务

  load() {
    // app > plugin > core
    this.loadApplicationExtend();
    this.loadRequestExtend();
    this.loadResponseExtend();
    this.loadContextExtend();
    this.loadHelperExtend();

    this.loadCustomLoader();

    // app > plugin
    this.loadCustomApp();
    // app > plugin
    this.loadService();
    // app > plugin > core
    this.loadMiddleware();
    // app
    this.loadController();
    // app
    this.loadRouter(); // Dependent on controllers
  }


   at module.exports (/Users/zepeng/外包/videoServe/app/middleware/apiAuth.js:2:11)
    at AppWorkerLoader.loadMiddleware (/Users/zepeng/外包/videoServe/node_modules/egg-core/lib/loader/mixin/middleware.js:75:12)
    at AppWorkerLoader.load (/Users/zepeng/外包/videoServe/node_modules/egg/lib/loader/app_worker_loader.js:39:10)
    at new Application (/Users/zepeng/外包/videoServe/node_modules/egg/lib/application.js:66:19)
    at Object.<anonymous> (/Users/zepeng/外包/videoServe/node_modules/egg-cluster/lib/app_worker.js:21:13)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29