middleware 中间件更适合处理请求,
plugins 插件可以处理独立的业务逻辑
egg plugins规范
- egg插件以 egg-开头,例如 egg-auth,egg-login
 - plugins插件是独立性的应用,插件相当于一个微应用
- 例如,用户登录鉴权,就是一个插件,因为这是个独立的业务
 
 - 插件不包括 router.js 和 controller控制器,为什么?
- 如果插件包含路由,极有可能和主项目的router,或 controller冲突
 
 
插件和中间件的区别
- 中间件
- 中间件是在请求到来的时候,在处理路由之前,执行的逻辑
 - middleware中间件更适合处理请求,在路由和服务的中间
 - 例如,校验权限,就用中间件
 
 - 插件,是扩展了 eggjs的功能
- egg插件包含 middleware
 
 
plugins插件
plugins插件都放在 src/app/lib/plugins目录下
/lib/plugin/egg-auth/app
egg插件开发 egg-socket
https://blog.csdn.net/taokexia/article/details/105724252
coreMiddleware
如果插件是 extend,不是 middleware,就不用再 app.js里面 push
- middleware中间件,需要 push到 app.config.coreMiddleware
 - extend
 - coreMiddleware 是个数组
 

src/app.js
'use strict';module.exports = app => {// 将 session保存到内存中const store = {};app.sessionStore = {async get(key) {return store[key];},async set(key, value, maxAge) {store[key] = value;store.maxAge = maxAge;},async destroy(key) {store[key] = null;},};// 将 plugin插件放入数组中const { coreMiddleware } = app.config;const plugins = [// 'auth',];app.config.coreMiddleware = [...coreMiddleware,...plugins,];// app.config.coreMiddleware.push('auth');};

