Node-RED 1.1 现已可供安装。
如果要升级,请阅读升级说明。
编辑器更新
信息侧边栏重新设计
信息侧边栏现在包含一个流程的树形视图——我们称之为大纲视图。这提供了另一种导航流程和快速查找内容的方式。
每个节点都有一个按钮,可将您带到工作区中的该节点,一个用于启用/禁用它的按钮,以及对于注入节点和调试节点,还有一个触发其操作的按钮。双击节点将弹出其编辑对话框。
新的帮助侧边栏
为了给大纲视图腾出空间,侧边栏的帮助部分现在已移至其自己的侧边栏选项卡中。将帮助部分放在其自己的选项卡中的额外好处是,您现在可以浏览所有可用的帮助主题,而无需在工作区中选择相应类型的节点。
这也为我们将来在编辑器中添加其他帮助主题提供了空间。
节点分组
为了帮助组织您的流程,您现在可以在编辑器中对节点进行分组。分组可以有自定义的边框和背景颜色以及可选的标签。
分组作为一种新类型的节点添加到流程中。随着人们开始使用它们,与尚未升级的用户共享流程将变得更加困难。为了解决这个问题,我们发布了 node-red-node-group
,它注册了一个 group
节点类型,但实际上什么也不做。安装此模块将允许旧版本的 Node-RED 导入包含分组的流程——尽管它们在编辑器中看不到这些分组。而且该模块知道在不需要时不会注册自己,因此在安装了它的情况下升级到 1.1 版本也不会有问题。
运行时功能
内置 node-red-admin
node-red-admin
命令行工具自项目开始以来就已存在,但它并未被广泛了解或使用。它可以用于远程管理 Node-RED 运行时。
为了使其更有用,它现在已集成到 node-red
命令中。您可以通过以下方式运行它
node-red admin
它提供的一个有用命令是为 adminAuth
哈希密码。它会提示您输入要使用的密码,然后返回您可以粘贴到设置文件中的哈希值。
$ node-red admin hash-pw
Password:
$2b$08$sjxLvq8MmycyWJpxPLyweuw/WlYt1MX56eG5Q5nlyxJs2fASGm2jm
其他命令让您可以列出已安装的节点、启用/禁用它们、安装新节点或删除旧节点。您还可以在流程库中搜索。
覆盖单个设置
node-red
命令现在支持 -D
选项来覆盖单个设置。例如,要临时以不同级别的日志记录运行,您可以使用
node-red -D logging.console.level=trace
httpAdminMiddleware
设置
我们已经有了 httpNodeMiddleware
选项一段时间了——它允许将自定义中间件添加到 HTTP In 节点的路由中。此版本增加了 httpAdminMiddleware
,它对所有管理路由(包括编辑器本身)执行相同的操作。例如,这可用于向所有管理请求添加自定义 http 标头。这不是大多数最终用户需要的功能,但是那些将编辑器嵌入到自己应用程序中的人的一个需求。
自定义 adminAuth
令牌处理
adminAuth
现在支持一个自定义的 tokens
函数,可用于验证传递给管理 API 的任何身份验证令牌。这为将 Node-RED 管理安全性与其他身份验证系统集成开辟了一些更灵活的选项。
从其他位置安装节点
用于安装新节点的管理 API 已扩展以支持“url”参数——该参数应为包含待安装节点的 tgz
文件的完整 URL。
这部分尚未在文档中详细说明,但目前,您可以阅读原始的设计说明。
刷新 HTTPS 证书
运行时现在可以配置为定期刷新其 https 证书。此功能需要 Node.js 12 或更高版本。
默认的设置文件已更新,其中包含如何配置此功能的示例。
节点更新
JSONata $moment
支持
我们通过 $moment
函数在 JSONata 表达式中添加了对 Moment 日期/时间库的支持。
这为 Node-RED 的核心添加了一些期待已久的时区感知功能。例如,您可以使用以下表达式获取奥克兰的当前时间
$moment().tz("Pacific/Auckland")
如果您想获取 2 小时后的时间,您可以这样做
$moment().add(2, "hours")
它在解析日期方面也做得更好
$moment($.payload, "YYYY-MM-DD")
我们正在考虑将 Moment 库作为函数节点的默认内置功能,但这将在未来的版本中实现。
注入节点属性
注入节点现在可以设置其发送消息的任何属性——您不再仅限于 topic
和 payload
。
函数节点生命周期
函数节点现在允许您提供在节点部署时和停止时应运行的代码。这使您可以在节点开始处理任何消息之前初始化节点中的任何状态。请注意,每段代码都在一个独立的范围内——您不能在一个范围内声明变量并在其他范围内访问它们。您需要使用 context
在它们之间传递数据。
主函数也已成为一个真正的异步函数,因此如果您喜欢,可以在顶层使用 await
。
调试节点状态
调试节点现在可以独立于其传递给调试侧边栏的内容来设置其状态消息。如果您想在状态中调试一个较短的摘要,同时在空间更大的侧边栏中显示更完整的信息,这将非常有用。
谈到调试节点,我们在编辑器中添加了许多操作,以帮助一次性激活/停用大量节点。
您可以在操作列表(Ctrl/Cmd-Shift-P
或 视图 -> 操作列表
)中搜索它们,并且可以为它们分配键盘快捷键
core:activate-selected-debug-nodes(核心:激活选定的调试节点)
core:activate-all-debug-nodes(核心:激活所有调试节点)
core:activate-all-flow-debug-nodes(核心:激活当前流程的所有调试节点)
core:deactivate-selected-debug-nodes(核心:停用选定的调试节点)
core:deactivate-all-debug-nodes(核心:停用所有调试节点)
core:deactivate-all-flow-debug-nodes(核心:停用当前流程的所有调试节点)
触发器节点
触发器节点现在可以选择将其“第二条消息”发送到单独的输出。
如果您希望它处理独立的消息流,您不再局限于使用 msg.topic
来识别流——您可以使用任何消息属性。