美文网首页JS相关让前端飞
Egg 框架简述 (二):插件使用

Egg 框架简述 (二):插件使用

作者: 阿拉拉布 | 来源:发表于2018-12-12 17:23 被阅读66次
    1. 简述
    2. 简单层级关系
    3. 路由(Router)
    4. 内置对象
    5. 配置(Config)
    6. 中间件(MiddleWare)
    7. 插件(Plugins)
    8. 常用对象关系模型(egg-sequelize)
    9. Worker和Agent
    10. 定时任务

    7. 插件(Plugins)

    官方文档:https://eggjs.org

           首先我们需要明确的是,什么是插件?插件在应用中扮演的角色就是,提升应用扩展能力的独立的功能封装。比如我们当前的每一个应用都是一个机器人,他们大概长这个样子:

    image
    我们在这些项目中,可以提取两类功能:具备通用性的功能不具备通用性的功能。他们通常有以下区别:
    名称 注释
    通用性 并非每个应用必须得有的可选功能,可由使用者自由选择是否扩展的能力
    非通用性 只在某个应用中必须存在,无法扩展给别的应用的主要业务能力

    因此,插件的设计原则是:具备通用性的功能,可以将其抽离作为插件备用。
    例如上图的这四个机器人,我们可以发现他们都具备一些相似的特性,以及完全不同的特性:有的机器人装载的手臂是相同的,有的装载的腿是相同的。这些相同或相似的部分,我们便可以独立抽象为一个插件,在有新的机器人需要创建时,有选择性的考虑是否添加该插件。这样设计的好处是:有效的减少了相似的代码在应用中重复出现的概率,提高了可扩展和可维护性。

    插件在Egg中的应用

    原则: Egg 本身未携带过多插件,仅配备了几个企业级常用的插件,如 onerrorlogrotatori18n 等。更多插件应由应用开发者自行选择扩展,或自行开发。

    应用表现: 扩展已有的 Egg 内置对象。如使用 egg-sequelize 插件后,在 Service 部分便可以使用 ctx.model.xxx 的方式调用 sequelize 的数据模型,该插件在实现原有的 ORM 操作过程中,将操作对象扩展到了 Service 对象上。

    image

    步骤1:插件选择

    我们可以在 Egg 相关社区,寻找我们感兴趣的插件。或通过 GitHub 搜索 egg-plugin ,寻找相关插件。

    步骤2:安装、配置插件

    Egg 插件通常以 NPM 包的形式存储于远程库中,我们搜索到感兴趣的插件后,直接通过 NPM 便可进行安装:

    $ npm i egg-yourplugin --save
    

    在安装之后,于应用中的 package.json 处对其进行配置:

    {
      "dependencies": {
        "egg-yourplugin": "^2.1.3"
      }
    }
    

    步骤3:启用插件

    我们需要在项目中的 ./config/plugin.ts 位置,启用相应的插件。如:

    import { EggPlugin } from 'egg';
    
    const plugin: EggPlugin = {
        
        // 启用插件 yourplugin
        yourplugin: {
            enable: true,
            package: 'egg-yourplugin',
        },
    }
    

    步骤4:初始化插件

    插件启用之后,可以在配置文件中( 如 ./config/config.default.ts ),对插件进行初始化设置:

    import { EggAppConfig, EggAppInfo, PowerPartial } from 'egg';
    
    export default (appInfo: EggAppInfo) => {
        const config = {} as PowerPartial<EggAppConfig>;
        // ...
        config.yourplugin = {
            field1, field2
        };
    }
    

    在应用的配置文件中,对插件的初始化数据,会覆盖掉插件中的原有配置,并传递给插件本身进行处理(实际上每一个插件也是一个小的应用)。

    步骤5:使用插件

    关于插件的使用方式,根据插件的构建方式不同而不同。每一个插件挂载到哪一个内置对象中,通常插件都会有详细的说明文档描述。我们可以寻找插件项目下的 README.md 查看。

    相关文章

      网友评论

        本文标题:Egg 框架简述 (二):插件使用

        本文链接:https://www.haomeiwen.com/subject/jgxuhqtx.html