节点的外观有三个方面可以自定义:图标、背景颜色及其标签。
节点的图标由其定义中的icon属性指定。
属性的值可以是字符串或函数。
如果该值为字符串,则用作图标。
如果该值是一个函数,它将在节点首次加载时或编辑后被调用执行。该函数预期返回用作图标的值。
该函数既会被工作区中的节点调用(此时this指向节点实例),也会被调色板中的节点条目调用。在后一种情况下,this不会指向特定节点实例,此时函数必须返回有效值。
...
icon: "file.svg",
...图标可以是以下任意一种:
注意: 在Node-RED 1.0中,所有这些图标都已被SVG替代版本取代,以获得更好的显示效果。为确保向后兼容性,编辑器会自动将任何对png版本的请求替换为可用的SVG版本。
A node can provide its own icon in a directory called icons alongside its .js
and .html files. These directories get added to the search path when the editor
looks for a given icon filename. Because of this, the icon filename must be unique.
图标应为透明背景上的白色,宽高比为2:3,最小尺寸为40 x 60像素。
Node-RED包含完整的Font Awesome 4.7图标集。
要指定一个FA图标,属性应采用以下形式:
...
icon: "font-awesome/fa-automobile",
...用户可以在节点的编辑对话框的"外观"标签页中自定义单个节点的图标。
注意:如果节点在其defaults对象中包含icon属性,则其图标无法自定义。例如,node-red-dashboard中的ui_button节点。
节点的背景颜色是快速区分不同节点类型的主要方式之一。它由节点定义中的color属性指定。
...
color: "#a6bbcf",
...我们使用了柔和的色调方案。新节点应尽量选择与此调色板协调的颜色。
以下是一些常用颜色:
节点有四个标签属性:label、paletteLabel、outputLabel 和 inputLabel。
工作区中节点的label可以是静态文本,也可以根据节点属性动态设置每个节点的标签。
属性的值可以是字符串或函数。
如果该值是字符串,则用作标签。
如果该值是一个函数,它将在节点首次加载时或编辑后被调用执行。该函数预期会返回一个用作标签的值。
如前一节所述,节点通常具有name属性以便区分。以下示例展示了如何设置label来获取该属性的值,或默认使用合理的值。
...
label: function() {
return this.name||"lower-case";
},
...请注意,无法在标签函数中使用credential属性。
默认情况下,节点类型会作为其在面板中的标签显示。可通过paletteLabel属性来覆盖此默认设置。
与label类似,该属性可以是字符串或函数。如果是函数,则在节点添加到面板时评估一次。
标签的CSS样式也可以通过labelStyle属性动态设置。目前,该属性必须指定要应用的CSS类。如果未指定,将使用默认的node_label类。另一个预定义的类是node_label_italic。
以下示例展示了当name属性已设置时,如何将labelStyle设置为node_label_italic:
...
labelStyle: function() {
return this.name?"node_label_italic":"";
},
...默认情况下,节点中的图标和标签是左对齐的。对于位于流程末端的节点,惯例是将内容右对齐。这可以通过在节点定义中将align属性设置为right来实现:
...
align: 'right',
...
节点可以在其输入和输出端口上提供标签,将鼠标悬停在端口上即可查看。
These can either be set statically by the node’s html file
...
inputLabels: "parameter for input",
outputLabels: ["stdout","stderr","rc"],
...或者由函数生成,该函数接收一个索引参数来指示输出引脚(从0开始计数)。
...
outputLabels: function(index) {
return "my port number "+index;
}
...在这两种情况下,用户都可以通过配置编辑器中的node settings部分来覆盖这些设置。
注意: 标签不是动态生成的,也不能通过msg属性来设置。
一个节点可以在其左侧或右侧边缘设置按钮,如核心的Inject和Debug节点所示。
一个关键原则是编辑器并非用于控制流程的仪表板。因此,通常情况下节点上不应设置按钮。Inject和Debug节点属于特殊情况,因为它们的按钮在流程开发过程中具有特定作用。
button 属性在其定义中用于描述按钮的行为。它至少必须提供一个 onclick 函数,该函数将在按钮被点击时调用。
...
button: {
onclick: function() {
// Called when the button is clicked
}
},
...该属性还可以定义一个enabled函数,用于根据节点的当前配置动态启用和禁用按钮。同样地,它可以定义一个visible函数来决定是否应该显示该按钮。
...
button: {
enabled: function() {
// return whether or not the button is enabled, based on the current
// configuration of the node
return !this.changed
},
visible: function() {
// return whether or not the button is visible, based on the current
// configuration of the node
return this.hasButton
},
onclick: function() { }
},
...button 也可以配置为切换按钮 - 就像调试节点那样。这是通过添加一个名为 toggle 的属性来实现的,该属性标识了节点 defaults 对象中应该用于存储布尔值的属性,每当按下按钮时该布尔值就会被切换。
...
defaults: {
...
buttonState: {value: true}
...
},
button: {
toggle: "buttonState",
onclick: function() { }
}
...Node-RED: 面向事件驱动应用的低代码编程平台。
版权所有 OpenJS基金会 及 Node-RED 贡献者。保留所有权利。OpenJS基金会 拥有注册商标并使用商标。有关 OpenJS基金会 的商标列表,请参阅我们的 商标政策 和 商标列表。未在 OpenJS基金会商标列表 中标注的商标™或注册®商标归其各自持有人所有。使用这些商标并不意味着与它们有任何关联或获得其认可。
The OpenJS Foundation | 使用条款 | 隐私政策 | OpenJS基金会章程 | 商标政策 | 商标列表 | Cookie政策