代碼地址 https://github.com/MoceptWeb/...
看以前肯定至少了解了egg的文檔了, 否則看下面是浪費時間哈;本人只寫了重點須要注意的地方!不對的地方請多多指教
若是代碼還不完善還不想發佈,能夠直接在項目文件中 npm link npm包目錄文件夾
name和eggPlugin字段javascript
"name": "@node/egg-passport-jyb", // 包名 "eggPlugin": { "name": "passportJyb" 這裏是在egg中真正用到的name },
config.passportJyb = { 'menu_code': 'loan_manage' };
exports.passportJyb = { enable: true, package: '@node/egg-passport-jyb' };
我的建議extend中的方法儘可能當前插件相關的加前綴, 防止互相干擾java
或者掛一個你的對象,方法在它上面便可,如 app.passport.xx
暴露方法給外部項目直接調用node
統一封裝了內部請求和mysql鏈接(多數據和單數據庫鏈接的區分),操做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; }
則是一些數據相關的操做git
在app.js入口控制插件中的全部middleware執行順序github
固然能夠加入配置項目, 指定在哪一個外部項目中的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, 0, 'passportJybAuth'); };
在passportJybAuth中間件中 能夠無需auth便可請求, 插件儘可能可拓展sql