egg插件编写

代码地址 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'
  };
  • {app_root}/app/config/config.{env}.js
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

在passportJybAuth中间件中 可以无需auth即可请求, 插件尽量可拓展

相关文章

这篇文章主要介绍“基于nodejs的ssh2怎么实现自动化部署”的...
本文小编为大家详细介绍“nodejs怎么实现目录不存在自动创建...
这篇“如何把nodejs数据传到前端”文章的知识点大部分人都不...
本文小编为大家详细介绍“nodejs如何实现定时删除文件”,内...
这篇文章主要讲解了“nodejs安装模块卡住不动怎么解决”,文...
今天小编给大家分享一下如何检测nodejs有没有安装成功的相关...