代码地址 https://github.com/MoceptWeb/...
看之前确定至少了解了egg的文档了, 不然看下面是浪费时间哈;本人只写了重点需要注意的地方!不对的地方请多多指教
npm包方式
如果代码还不完善还不想发布,可以直接在项目文件中 npm link npm包目录文件夹
package.json
name和eggPlugin字段
"name": "@node/egg-passport-jyb",// 包名 "eggPlugin": { "name": "passportJyb" 这里是在egg中真正用到的name },
项目中使用插件和配置
- {app_root}/app/config/plugin.js
config.passportJyb = { 'menu_code': 'loan_manage' };
exports.passportJyb = { enable: true,package: '@node/egg-passport-jyb' };
npm中代码
extend
个人建议extend中的方法尽量当前插件相关的加前缀, 防止互相干扰
或者挂一个你的对象,方法在它上面即可,如 app.passport.xx
- context.js
- helper.js
统一封装了内部请求和MysqL连接(多数据和单数据库连接的区分),操作
async passportMysqLConnect() { const portalConfig= this.app.config['passportJyb'] let MysqLConnect = null; if(portalConfig.userDBClient) { MysqLConnect = this.app.MysqL.get(portalConfig.userDBClient) } else { MysqLConnect = this.app.MysqL } if(!MysqLConnect) { this.ctx.logger.error('数据库连接数据'); } return MysqLConnect; }
service
则是一些数据相关的操作
middleware
- middleware位置
在app.js入口控制插件中的所有middleware执行顺序
当然可以加入配置项目, 指定在哪个外部项目中的middleware之后, 看各项目需求
module.exports = app => { // 将 static 中间件放到 bodyParser 之前 const index = app.config.coreMiddleware.length; // const index = app.config.coreMiddleware.indexOf('bodyParser'); // assert(index >= 0,'bodyParser 中间件必须存在'); app.config.coreMiddleware.splice(index,'passportJybAuth'); };
config
- 配置noAuth正则url