当前位置: 首页 > 后端技术 > Node.js

egg插件写作

时间:2023-04-03 12:41:29 Node.js

代码地址https://github.com/MoceptWeb/...确保你在阅读之前至少了解了egg的文档,否则看下面是浪费时间;我只写了需要注意的重点!如果代码不完善不想发布,可以直接npm链接项目文件中的npm包目录文件夹package.jsonname和eggPlugin字段"name":"@node/egg-passport-jyb",//包名"eggPlugin":{"name":"passportJyb"这里是egg中实际使用的名字},项目使用插件和配置{app_root}/app/config/plugin.jsconfig.passportJyb={'menu_code':'loan_manage'};{app_root}/app/config/config.{env}.jsexports.passportJyb={enable:true,package:'@node/egg-passport-jyb'};npmCodeextend我个人建议extend中的方法尽量以当前插件为前缀,防止互相干扰或者挂掉你的对象,方法就可以了。例如app.passport.xxcontext.js将方法暴露给外部工程直接调用helper。js统一封装了内部请求和mysql连接(区分多数据和单数据库连接),操作asyncpassportMysqlConnect(){constportalConfig=this.app.config['passportJyb']letmysqlConnect=null;if(portalConfig.userDBClient){mysqlConnect=this.app.mysql.get(portalConfig.userDBClient)}else{mysqlConnect=this.app.mysql}if(!mysqlConnect){this.ctx.logger.error('数字数据库连接数据');}返回mysqlConnect;}service是一些数据相关的操作。,看每个项目的要求module.exports=app=>{//在bodyParser之前放静态中间件constindex=app.config.coreMiddleware.length;//constindex=app.config.coreMiddleware.indexOf('bodyParser');//assert(index>=0,'bodyParser中间件必须存在');app.config.coreMiddleware.splice(index,0,'passportJybAuth');};config配置noAuth正则url可以在passportJybAuth中间件中请求可以不用auth,插件尽量扩展和配置登录后跳转地址和单点(被动)登录