我们在两年前发布了达成这一目标的路线图。虽然花费的时间比我们预期的要长,但现在终于到了我们发布 Node-RED 1.0 的时刻。
这个版本的发布已经酝酿了很长时间,它为我们提供了一个稳定的基础,可以在此之上继续构建。这是一个反思的机会,不仅反思我们通过这个项目取得了多少成就,也反思我们还有多少工作要做。在我们规划通往 2.0 的道路时,待办事项列表中包含了一长串需要我们去实现的功能和改进。
非常感谢社区中为这个版本做出贡献的每一个人。无论是通过代码、文档、想法还是反馈,都帮助项目朝着正确的方向前进。
如果您是 Node-RED 的新手,或者想复习一下基础知识,我们还发布了一个新的视频系列,介绍 Node-RED 的基本要素。虽然还有很多内容有待补充,但已经足够让您入门了。
- 异步消息传递
- 节点发送 API
- 克隆消息
- 重组的节点面板
- 移除的节点
- 子流程实例属性 UI
- 动作列表
- 可视化 JSON 编辑器
- 新的连线技巧
- 更多搜索结果
- 新的导入/导出对话框
- 上下文侧边栏自动刷新
- 选择您的语言
- 编辑器 CSS 重构
- 编辑器依赖项
- 节点更新
- 新的 Docker 镜像
- 流程库更新
由于此版本的主版本号有重大提升,它包含一些您在升级前需要注意的变更。
异步消息传递
此版本将节点间的消息传递方式更改为始终异步,而不是像以前那样根据单个节点的实现方式,有时是异步的,有时是同步的。
在某些情况下,当流程分支时,这将改变消息的相对顺序。
有关此更改的更多详细信息,请阅读这篇博客文章。
节点发送 API
节点现在有了一个新的 API,用于在运行时处理消息。该 API 允许节点在处理完一条消息后通知运行时。
这将帮助运行时跟踪流经系统的节点,从而支持未来的功能,例如节点的自动超时。
为了配合这一变化,我们引入了一个新的 Complete 节点。该节点可以像 Catch 节点一样,针对另一个节点,当目标节点处理完一条消息时,它就会被触发。
这只适用于更新到新 API 的节点。
这篇博客文章详细介绍了新风格的 API。相关文档也已更新。
克隆消息
异步消息传递变更的一个连锁效应是 Function 节点克隆消息方式的改变。它过去会尽可能避免克隆消息,但在引入异步消息传递后,这会导致一些难以发现的问题。
所以现在 Function 节点也会克隆所有您传递给 node.send()
的消息。
如果您的流程依赖于消息不被克隆,您将需要更新您的流程,以请求运行时不要进行克隆。
有关此问题的更多详细信息,请阅读这篇博客文章。
编辑器特性
编辑器有许多值得强调的新功能。
重组的节点面板
我们重组了节点面板,相信能为节点提供一个更好的排序。
现在的分类是:
- 通用 (common) - 基本的构建块节点:Inject, Debug, Catch, Status, Links, Comment。
- 功能 (function) - 主要的功能节点:Function, Switch, Change, Template, Exec, Delay, Trigger, Range。
- 网络 (network) - 通过网络进行操作的节点。这意味着 HTTP In 和 HTTP Response 节点现在并排放置,而不是分散在不同类别中 - MQTT、TCP 和 UDP 节点也同样如此。
- 序列 (sequence) - 用于处理消息序列的节点:Split, Join, Sort 和 Batch。
- 解析器 (parser) - 用于处理特定数据格式的节点:CSV, HTML, JSON, XML 和 YAML。
- 存储 (storage) - 文件节点。
移除的节点
我们从默认的节点面板中移除了一些节点。
Twitter、Email、Feedparser、Sentiment 和 Pi GPIO 节点不再作为 node-red
模块的依赖项进行安装。它们早就已经存在于各自的 npm 模块中,但如果您正在使用它们,将需要明确地将它们重新添加回来。
如果您在树莓派上使用我们的脚本进行安装,那么 GPIO 节点已经为您重新安装好了。
子流程实例属性 UI
在 0.20 版本中,我们增加了子流程模板定义一组环境变量的功能,并允许子流程的单个实例覆盖这些值。
在此版本中,当您定义子流程的环境变量时,您还可以为环境变量在实例节点中的呈现方式定义一个自定义 UI。
例如,您可能希望在子流程中有一个布尔标志,用于为每个实例切换某项行为。您现在可以将其配置为显示一个复选框,而不是在实例节点中使用自由格式的文本字段来设置该标志。
您现在还可以自定义子流程节点的颜色。
动作列表
您可以在编辑器中执行的许多操作都被定义为“动作”。这些动作可以在设置对话框中分配键盘快捷键。我们为许多动作提供了默认快捷键,但并非全部。
此测试版引入了新的动作列表。它提供了一种浏览和触发任何动作的方式。
您可以从 视图->动作列表
菜单项打开动作列表,或使用快捷键 Ctrl-Shift-P
。
说到键盘快捷键,我们添加了一些新的默认快捷键。
Cmd/Ctrl-Y
:重做上一次用Cmd/Ctrl-z
撤销的编辑。Cmd/Ctrl-Alt-L
:清除调试侧边栏中的消息。Cmd/Ctrl-d
:部署您的流程。
可视化 JSON 编辑器
JSON 编辑器现在提供了一个可视化模式,您可以在其中编辑 JSON,而不必担心所有引号是否都放在了正确的位置。
新的连线技巧
在 0.20 版本中,在工作区中按住 Ctrl 并单击会打开快速添加对话框。现在,如果您在一条连线上按住 Ctrl 并单击,快速添加对话框会显示出来,您添加的任何内容都将被插入到您点击的连线中。
更多搜索结果
搜索对话框(Ctrl-f
)过去只返回前 25 个结果。对于某些用它来浏览数百个选项卡的用户来说,这是一个问题。现在,该对话框可以显示所有结果——尽管是一次显示 25 个。
新的导入/导出对话框
剪贴板对话框已与库导入/导出对话框合并,以便在导入和导出流程时提供更一致的体验。
各个类型的库(例如,在 Function 节点中)也已更新为匹配的样式。
上下文侧边栏自动刷新
上下文侧边栏现在有选项可以开启或关闭其内容的自动刷新功能,当您在编辑器中更改选择时,内容会自动刷新。
选择您的语言
在用户设置对话框下有一个新选项,可以选择编辑器显示的语言。默认情况下,它会使用浏览器的首选语言,但您可以覆盖该设置,以使用我们提供的语言之一:英语、日语、中文、韩语或德语。
如果您想帮助提供其他语言的翻译,请与我们联系!
编辑器 CSS 重构
我们已经彻底 overhaul(全面检修)了编辑器的内部样式,使其具有更加一致的 CSS 结构。
这可能是我们在 Node-RED 历史上做出的最大的一次破坏性变更。这是我们只有在主版本号提升时才能进行的变更。
这将破坏::
- 人们为 Node-RED 创建的任何自定义主题。
- 任何超出了我们提供的 API 范围、自定义了其在编辑器中外观的节点。
对此没有简单的解决方法。您需要在首次尝试此测试版之前禁用您的自定义主题。
如果您正在使用出色的 node-red-contrib-theme-midnight-red
,那么已经有一个兼容 1.0 的版本可用。
编辑器使用的几乎每一个 CSS 类和 DOM ID 都已更改。我们之前使用的类和 ID 反映了 5 年来的增量开发,包括一些可以追溯到我开始创建 Node-RED 的第一天的事物。
到目前为止,它们一直为我们服务得很好,但坦白说,对于任何想创建自定义主题或尝试将编辑器嵌入自己页面的人来说,它们是一个不一致的烂摊子。
所以这个版本为所有这些东西带来了更加一致的命名方案。我们避免为页面设置任何全局样式,而是仅将它们应用于编辑器组件内的元素。
我们还对 CSS 进行了结构化,使得为编辑器创建自定义颜色方案变得*非常*容易。我们还提供了一个脚本,可以帮助您完成生成自定义主题的大部分工作。如果您感兴趣,请到 Slack 上与我们聊天。
这些变更的几乎完整列表可在此处找到。
编辑器依赖项
我们终于将 jQuery 和 jQuery-UI 的版本更新到了最新的 3.4.1 和 1.12.1。由于 jQuery 3.x 移除了一些我们之前依赖的已弃用 API,我们还包含了 jquery-migrate,以暂时保持功能的正常运行。这样做还有一个额外的好处,就是可以记录任何对已弃用 API 的使用情况,这样我们就可以开始发现需要更新的 contrib 节点。
在我们迎接最新版本的 jQuery 的同时,我们也告别了 Bootstrap。我们在编辑器早期使用了 Bootstrap 主题,并一直在慢慢地摆脱对它的依赖。随着这个版本的发布,Bootstrap CSS 和 JavaScript 的最后残余已被移除。
节点更新
核心节点进行了一些小的错误修复和增强。
- CSV 节点现在有一个选项可以关闭其对数值的智能检测,并将其保留为字符串。事实证明,在某些边缘情况下,它有点过于智能了。
- Template 节点*终于*有了一个选项,可以像 Function 节点很早以前就有的那样,将编辑框扩展为全屏编辑器。
- 现在更容易选择 Catch 和 Status 节点的目标节点。您不再需要从一个长长的节点列表中挑选,而是可以切换回工作区,然后点击您想要的节点。
- MQTT 节点现在默认使用协议的 3.1.1 版本,而不是较旧的 3.1 版本。我们还没有支持 MQTTv5,但有一个等待审查的 PR,所以请关注下一版本中的相关更新。
- Switch 节点增加了一个新的“拥有键”规则,用于检查一个对象是否包含给定的属性,无论其值如何。
- HTTP Request 节点现在允许您设置 keep-alive 选项,这样连接就可以被重用。
新的 Docker 镜像
Docker 镜像已经进行了非常大的 overhaul(全面检修)。我们现在为多种架构生成镜像,并已迁移到 node:XX-alpine
基础镜像。
随着这一变更,镜像的名称已更改为 nodered/node-red
。我们不再向 nodered/node-red-docker
发布更新。
请查阅 Node-RED Docker 的自述文件以获取更多详细信息。
流程库更新
除了这个版本,我们还对流程库进行了重大更新。
除了新的外观,我们还增加了对流程进行评级的功能,就像您以前可以对节点进行评级一样。我们还引入了集合(Collections)的概念;任何人都可以创建的节点和流程组。
一些已经创建的集合包括:
这是社区帮助整理库中所有优秀内容的好方法。