Node-RED 1.3 现已可供安装。如果升级,请阅读升级说明。
更新日志包含此版本中的完整更改列表,但以下是亮点。
请注意,这是最后一个可在 Node 8 或 10 上运行的版本。
下个月我们将发布 Node-RED 2.0,届时将取消对这些 Node 版本的支持,因为它们已达到生命周期结束。
发布视频即将推出 - 订阅频道,以免错过!
主要功能
Function 节点使用 npm 模块
我们使 Function 节点更容易使用额外的 npm 模块。
通过在您的设置文件中将 functionExternalModules
设置为 true
,您将能够为您的 Function 节点配置它将使用的附加模块列表。当您部署流时,运行时将自动尝试安装这些模块。
与 functionGlobalContext
方法不同,在 functionGlobalContext
方法中,您的 Function 节点必须在使用模块之前从全局上下文检索模块,而此新功能加载的模块会自动在您的代码中被 require 和定义。
编辑对话框中有一个新的 setup
选项卡,您可以在其中配置节点输出的数量和节点使用的模块列表。(如果您未启用 functionExternalModules
设置,您将只看到输出字段)。
您会看到我们已经重新标记了其他选项卡,以使您更清楚地了解这些选项卡中的代码何时运行。
在 Change/Switch 节点中引用 msg 属性
现在可以在 Change 和 Switch 节点中嵌套对消息属性的引用。
例如,如果您从多个传感器接收温度。每个消息都将 msg.topic
设置为传感器所在的房间,msg.payload
是值。您希望将每个房间的当前温度存储在 flow.rooms
下的上下文中——例如 flow.rooms.kitchen
和 flow.rooms.garage
。
在以前的 Node-RED 版本中,要使用 Change 节点执行此操作,需要使用 JSONata。例如
- 将
flow.rooms
设置为表达式$merge([$flowContext('rooms'),{$.topic:$.payload}])
更有可能的是,用户会回到 Function 节点——这是我们希望避免的事情。
在 1.3 版本中,现在可以将 Change 节点配置为
- 将
flow.rooms[msg.topic]
设置为msg.payload
的值。
事实上,任何在后台使用 RED.util.getMessageProperty(...)
工具的节点都将获得此功能。
Node-RED 插件框架
我们为 Node-RED 引入了一个新的插件框架,使其更容易自定义和添加新功能。此功能还处于早期阶段——但未来将构成许多新事物的基础。通过插件而不是核心代码提供额外功能,可以使核心更小,并使嵌入 Node-RED 的应用程序更容易选择他们想要的“额外”功能。
利用这个新框架,今天有两种新类型的插件可用
-
编辑器主题插件,使用户更容易安装新主题并在其设置文件中启用它们。更多详情。
这里有大量不错的贡献主题可供选择。此处。请留意这些主题的更新插件版本。
-
库源插件。这些将允许用户配置将在编辑器内的导入/导出对话框中出现的附加库。我们正在发布一个本地文件系统插件(@node-red/library-file-store)作为第一个示例。更多详情
添加额外资源
插件和节点的一个共同要求是能够将附加资源加载到编辑器中。这可以是帮助文本中的图像,或额外的 JavaScript 库。
以前,这需要节点进行大量额外工作才能使这些资源可供加载。
使用插件框架,我们使这更容易做到——这适用于节点和插件。
现在,如果模块在顶层有一个名为 resources
的文件夹,运行时将自动使其内容可供通过 Admin HTTP API 加载。
节点/插件仍然负责在编辑器中加载该内容,但现在它们不需要在运行时创建路由。
创建节点文档已更新,其中包含更多详细信息。
npm 打包子流
现在可以将子流打包为模块并发布到 npm,以便像任何其他节点一样安装到面板中。
作为其中的一部分,子流属性编辑对话框有一个新的“模块属性”选项卡,您可以在其中设置子流的可选元数据,这些元数据可用于生成 npm 模块。
生成模块的过程目前完全是手动的。我们已在创建节点指南中添加了一个部分,详细介绍了该过程。
编辑器特性
导出预览
导出对话框现在显示您正在导出的结构化列表。原始 JSON 仍然可以在对话框的第二个选项卡中看到。这应该有助于用户理解他们正在导出的内容。
选择节点
如果您按住 Shift 键单击一个节点,我们已经会自动选择其流中的所有节点。
在此版本中,如果您按住 Shift 键单击节点的左侧,我们将选择所有上游节点。如果您按住 Shift 键单击右侧,我们将选择所有下游节点。按住 Shift 键单击节点的中间将像以前一样选择整个流。
我们还为这些添加了相应的操作和默认键盘快捷键
core:select-connected-nodes
-alt-s c
- 选择当前选定节点连接的所有节点。core:select-upstream-nodes
-alt-s u
- 选择从任何当前选定节点的输入可达的所有节点core:select-downstream-nodes
-alt-s d
- 选择从任何当前选定节点的输出可达的所有节点
打开子流
以前,要打开子流,您必须首先双击工作区中的实例,然后单击出现的编辑对话框中的“编辑子流模板”按钮。
在此版本中,如果您在双击节点时按下 Ctrl(或 Mac 上的 Cmd),它将直接带您进入子流模板选项卡。类似地,如果选择了子流实例,在按下 Enter 键时按住 Ctrl(或 Cmd)也会执行相同的操作。
在工作区中导航。
我们添加了一些键盘快捷键来帮助在工作区中导航。
- 您可以使用光标键更改工作区中选定的节点。
- 您可以使用
Ctrl/Cmd-[
和Ctrl/Cmd-]
在选项卡之间切换 - 当您在选项卡之间跳转时,例如使用
Ctrl-Enter
转到子流模板选项卡时,您可以使用Ctrl/Cmd-Shift-ArrowLeft
返回到您所在的上一个选项卡。如果您使用它返回,那么您可以使用Ctrl/Cmd-Shift-ArrowRight
在选项卡历史中前进。
键盘快捷键
现在可以通过设置文件中的 editorTheme
选项设置自定义键盘快捷键。这意味着您可以更轻松地在实例之间复制您的自定义设置。更多详情
其他编辑器更新
- 如果您重新排列侧边栏选项卡,我们现在确保重新加载编辑器时始终显示第一个选项卡。
- 删除正在使用的子流实例时添加确认对话框
- 信息侧边栏中的大纲视图现在显示每个子流有多少个实例。单击数字将打开搜索对话框,列出所有实例。
- 您可以在大纲视图中单击一下即可切换组内容的启用/禁用状态
运行时特性
新 externalModules
设置
有一个新设置可用于控制可以安装到 Node-RED 中的内容 - externalModules
。
这涵盖了两件事 - 可以通过面板管理器安装的新节点,以及 Function 节点可以加载的模块。
在此设置下,您可以提供 allow
和 deny
列表,这些列表用于确定运行时可以加载哪些模块。这些列表也由编辑器用于过滤面板管理器显示的节点列表。
此新设置替换了一些现有设置,这些设置现已弃用。
editorTheme.palette.editable
用于externalModules.palette.allowInstall
autoInstallModules
用于externalModules.palette.allowInstall = true
和externalModules.autoInstall = true
autoInstallModulesRetry
用于externalModules.autoInstallRetry
editorTheme.palette.upload
用于externalModules.palette.allowUpload
其他运行时更新
- 您现在可以通过设置文件中的
lang
选项明确设置运行时要使用的语言。更多详情 - 停止流时,配置节点现在最后停止,以便流节点在尝试停止自身时可以依赖它们仍然存在。更多详情
- 您现在可以通过设置文件中的
editorTheme.projects.workflow
选项默认使用简化的 Git 工作流。更多详情 httpAdminMiddleware
和httpNodeMiddleware
现在可以是一个要应用的中间件数组,而不仅仅是一个单一函数。更多详情
节点功能
- MQTT 节点现在支持 MQTTv5 以及 v5 引入的绝大多数新功能。
- 许多核心节点已更新以支持触发 Complete 节点 - Batch、Delay、Split、Join、Trigger
- Exec 节点不再默认追加
msg.payload
- 这经常困扰用户。这仅适用于新添加的节点 - 现有节点不会受到影响。我们还更新了 Exec 节点,以便您可以选择追加msg.payload
以外的消息属性。 - Inject 和 Change 节点现在将在编辑对话框关闭时突出显示其配置中的任何错误。
- Function 节点现在公开
node.outputCount
,因此您的代码可以知道节点已配置了多少个输出。