Skip to content

Latest commit

 

History

History
82 lines (64 loc) · 2.65 KB

core_plugin.md

File metadata and controls

82 lines (64 loc) · 2.65 KB

插件系统

目的

为jdf编译流程加入自定义的一些功能

可选插件

使用方法

插件集成

本地安装

在jdf工程根目录下执行npm install pluginName --save-dev,方便快捷,但是每新建一个工程就需要重新install。

全局安装

执行npm install -g pluginName全局安装后,环境变量中添加NODE_PATH,这样jdf就可以读取全局的plugin了

如何添加NODE_PATH

添加到jdf配置

详见“config.json配置项说明”

暴露的编译节点

  • 编译开始前beforeBuild
  • 编译完成后afterBuild
  • widget模板编译前beforeTplRender
  • widget模板插入html页面前beforeTplInsert

后续可以提供更多的编译节点。

config.json配置项说明

在json文件顶层新增plugins属性,plugins是一个数组列表,每一个数组元素为一个插件配置,插件配置可以直接写插件名,也可以以对象的形式传递,目前受到规范的只有name属性,代表了插件名。

插件在各个节点的执行顺序为plugins数组声明顺序

{
    "plugins": [
        {
            "name": "jdf-cms"
        },
        "jdf-extract-template"
    ]
}

插件约束

编写插件要遵循一些规范,以便被jdf模块系统初始化。

暴露方法

插件必须要暴露一个名为Plugin的函数,这个函数返回一个对象,对象里必须包含setConfig方法,该方法会在插件require到jdf中时第一时间执行,因此该方法也是插件的初始化方法,初始化工作可以放在这里执行。setConfigoption参数在下面单独说明。

除了setConfig方法以外,jdf编译节点钩子方法的声明也处于其中,可以只声明需要的钩子方法。

示例:

export const Plugin = function () {
    return {
        setConfig: function (option) {
            Object.assign(config, option || {})
        },
        beforeBuild: function () {
            return Promise.resolve()
        },
        afterBuild: function () {
            return Promise.resolve()
        },
        beforeTplRender: function (tpl, widgetInfo) {
            return tpl
        },
        beforeTplInsert: function (tpl, widgetInfo) {
            return tpl
        }
    }
}

jdf提供属性

jdf工具提供了几个内部变量给插件使用。

通过setConfig传递。当前提供的属性有两个jdf, VFS,前者包含jdf配置项,后者为jdf的文件系统。