子流程可以打包为npm模块,并像其他节点一样进行分发。
安装完成后,它们会像常规节点一样出现在面板中。用户无法查看或修改子流程内部的内容。
现阶段,创建子流程模块是一个需要手动编辑子流程JSON的手动过程。我们未来将提供工具来帮助自动化这一过程——但目前,这些说明应能帮助您入门。
任何子流程都可以打包为一个模块。在操作之前,您需要考虑它将如何被使用。以下检查清单有助于提醒需要考虑的事项:
子流程可以包含额外的元数据,用于定义其所属的模块。
在子流程模块属性编辑对话框中,您可以设置以下属性:
Module - npm包名称Node Type - 默认会使用子流程的id属性值。建议提供一个更有意义的类型值。与常规节点类型一样,该值必须保持唯一以避免与其他节点产生冲突。Version描述LicenseAuthorKeywords这是需要在Node-RED之外进行手动操作的部分。
创建一个以您想给模块命名的目录。在这个例子中,我们将使用node-red-example-subflow。
mkdir node-red-example-subflow cd node-red-example-subflow
使用 npm init 命令创建 package.json 文件:
npm init
它会提出一系列问题 - 请提供与您添加到子流程元数据中的值相匹配的答案。
添加一个README.md文件 - 因为所有优秀的模块都必须包含README说明文档。
为您的模块创建一个JavaScript封装器。在这个示例中,我们将使用example.js:
const fs = require("fs");
const path = require("path");
module.exports = function(RED) {
const subflowFile = path.join(__dirname,"subflow.json");
const subflowContents = fs.readFileSync(subflowFile);
const subflowJSON = JSON.parse(subflowContents);
RED.nodes.registerSubflow(subflowJSON);
}
这段代码读取名为subflow.json的文件内容(我们稍后会创建这个文件),解析它,然后将其传递给RED.nodes.registerSubflow函数。
完成以上设置后,您现在可以将子流程添加到模块中。这需要仔细编辑子流程的json文件。
Ctrl-E 或 菜单->导出),并将JSON粘贴到文本编辑器中。如果在导出对话框的JSON选项卡中选择"格式化"选项,后续步骤会更方便。JSON结构为一个节点对象数组。倒数第二个条目是子流程定义,最后一个条目是您添加到工作区的子流程实例。
[
{ "id": "Node 1", ... },
{ "id": "Node 2", ... },
...
{ "id": "Node n", ... },
{ "id": "Subflow Definition Node", ... },
{ "id": "Subflow Instance Node", ... }
]
[符号之前"flow"的新属性。subflow.json{
"id": "Subflow Definition Node",
...
"flow": [
{ "id": "Node 1", ... },
{ "id": "Node 2", ... },
...
{ "id": "Node n", ... }
]
}
最后一步是更新你的package.json文件,这样Node-RED就能知道你的模块包含哪些内容。
添加一个"node-red"部分,其中包含一个"nodes"部分,用于存放你的.js文件条目:
{
"name": "node-red-example-subflow",
...
"node-red": {
"nodes": {
"example-node": "example.js"
}
}
}
如果您的子流程使用了任何非默认节点,必须确保package.json文件中将它们列为依赖项。这将确保它们会随您的模块一起安装。
模块列在标准顶层"dependencies"部分以及"node-red"部分中的"dependencies"部分。
{
"name": "node-red-example-subflow",
...
"node-red": {
"nodes": {
"example-node": "example.js"
},
"dependencies": [
"node-red-node-random"
]
},
"dependencies": {
"node-red-node-random": "1.2.3"
}
}
Node-RED: 面向事件驱动应用的低代码编程平台。
版权所有 OpenJS基金会 及 Node-RED 贡献者。保留所有权利。OpenJS基金会 拥有注册商标并使用商标。有关 OpenJS基金会 的商标列表,请参阅我们的 商标政策 和 商标列表。未在 OpenJS基金会商标列表 中标注的商标™或注册®商标归其各自持有人所有。使用这些商标并不意味着与它们有任何关联或获得其认可。
The OpenJS Foundation | 使用条款 | 隐私政策 | OpenJS基金会章程 | 商标政策 | 商标列表 | Cookie政策