# 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
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
← Node 的事件机制 Node模块加载规则 →