Egg框架二——渐进式开发
一、初始状体
插件写在extend里边(这时候只是扩展)
example-app
├── app
│ ├── extend
│ │ └── context.js
│ └── router.js
├── test
│ └── index.test.js
└── package.json
二、插件的雏形
把代码写成插件的形式,但并不独立出去。(觉得能成为插件,需要进行封装,这时候已经成为插件,需要注册才能使用,通过path挂载)
example-app
├── app
│ └── router.js
├── config
│ └── plugin.js
├── lib
│ └── plugin
│ └── egg-ua
│ ├── app
│ │ └── extend
│ │ └── context.js
│ └── package.json
├── test
│ └── index.test.js
└── package.json
-
app/extend/context.js
移动到lib/plugin/egg-ua/app/extend/context.js
。 -
lib/plugin/egg-ua/package.json
声明插件。{ "eggPlugin": { "name": "ua" } }
-
config/plugin.js
中通过path
来挂载插件。// config/plugin.js const path = require('path'); exports.ua = { enable: true, path: path.join(__dirname, '../lib/plugin/egg-ua'), };
三、抽成独立插件
见[抽出文档][https://eggjs.org/zh-cn/advanced/plugin.html]
四、沉淀到框架
由插件能够[组成框架][https://eggjs.org/zh-cn/advanced/framework.html]