/egg-load

🚀 自动挂载第三方模块至 Egg.js 框架上

Primary LanguageJavaScriptMIT LicenseMIT

egg-load

npm version MIT npm

egg-load-image

自动挂载第三方模块至 Egg.js 框架上

目录

介绍

在项目开发中,需要用到一些第三方模块(module),一般情况下使用 require 就可以将模块引入使用了。但是如果多个文件中用到同一个模块,在每个文件中都需要 require 引入,显得有些麻烦,同时也不利于项目工程化管理。

本插件就是为了解决这个问题而诞生的,能够将指定的第三方模块挂载到 Egg.js 框架的 app 属性上,以便调用。

本插件完美适配 Egg.js 框架,只需要按照框架要求启用插件,根据文档要求进行配置使用即可。

安装

按照通用的方式使用 npm 下载安装到你的项目下即可,无需全局安装。

安装命令:

npm i egg-load

使用

在使用前,请确保你已经阅读 Egg.js 框架关于插件文档

下面说明如何配置以及使用插件。

启用插件

config/plugin.js 文件中声明启用插件:

exports.load = {
  /** 是否启用插件,true 为启用,false 为禁用 */
  enable: true,

  /** 指定插件使用的包,请填写 'egg-load' */
  package: 'egg-load',
};

配置方式

config/config.${env}.js文件配置插件:

exports.load = {
  /** 需要挂载的模块列表 */
  module: [
    /** 列表项支持对象(object)和字符串(string)两种形式 */
    {
      /** 需要挂载的 npm 包的包名,例如 axios,必填 */
      package: 'pkg1-name',

      /** 挂载的属性名,例如填 abc,该模块可以通过 app.abc 进行访问,默认为包名,选填 */
      name: 'abc',

      /** 是否禁用,默认为否,选填 */
      disabled: false,
    },

  /** 使用字符串形式只需要输入包名即可,其他属性按照默认属性自动设置 */
    'pkg2-name',
  ],

  /** 是否挂载到 app 上,默认开启 */
  app: true,

  /** 是否挂载到 agent 上,默认关闭 */
  agent: false,
}

各配置项的含义是:

属性 类型 默认值 是否必填 说明
module object | string 需要挂载的模块列表,列表项支持对象(object)和字符串(string)两种形式
app string true 是否挂载到 app 上,默认开启
agent boolean false 是否挂载到 agent 上,默认关闭

使用说明

按照上述方式配置后,第三方模块将自动挂载到了 app 上,可以通过指定的属性名进行访问。

另外一点需要说明的是,配置引入的第三方模块,需要自行下载安装,本插件并不会帮助你自动下载。

示例

我们模拟以下这个使用场景,来演示如何配置和使用本插件:

发现 axios 和 only 两个模块的使用率非常高,于是准备将这两个模块挂载到框架上。

config/plugin.js 文件中声明启用插件:

exports.load = {
  enable: true,
  package: 'egg-load',
};

config/config.${env}.js文件配置插件(示例是一个典型的配置方式):

exports.load = {
  module: [
    {
      package: 'axios',
      name: 'req',
    },
    'only',
  ],
}

通过上述示例方式配置后,可以通过 app.res 访问 axios 模块,以及通过 app.only 访问 only 模块。

相关

以下是作者开发的 Egg.js 框架的插件系列,已用于作者的生产项目中,推荐使用。

  • egg-apigw-tracer - ⚡ 适配 API 网关的 HTTP 请求示踪器,用于 Egg.js 框架
  • egg-aliyun-tablestore - 🚚 阿里云表格存储(Tablestore)插件,用于 Egg.js 框架
  • egg-load - 🚀 自动挂载第三方模块至 Egg.js 框架上

作者

我是 inlym ,一个产品经理和全栈开发者。

如果你有任何问题或者建议,欢迎联系我,以下是我的联系方式:

参与

非常欢迎你能够参与这个项目的开发和维护。

你可以通过以下几种方式参与到项目中:

  1. 提建议和需求。对于几句话就能说清楚的建议和需求,你可以直接 提一个 New Issue
  2. Fork 项目,修改代码,然后提交 Pull requests 。(提交前请检查务必通过 ESLint 检查)

许可证

本插件使用 MIT 许可证。