创建一个简单的Node,可以将输入的数据转换成小写。
初始化一个npm 项目
- 执行命令
npm init
执行过程:
# wjy @ qifang in ~/gitProjects/node-red-dev [21:49:17]
$ npm init
This utility will walk you through creating a package.json file.
It only covers the most common items, and tries to guess sensible defaults.
See `npm help json` for definitive documentation on these fields
and exactly what they do.
Use `npm install <pkg>` afterwards to install a package and
save it as a dependency in the package.json file.
Press ^C at any time to quit.
package name: (red-dev) node-red-contrib-example-lower-case
version: (1.0.0)
description: node-red-contrib-example-lower-case
entry point: (index.js) lower-case.js
test command:
git repository:
keywords:
author:
license: (ISC)
About to write to /Users/wjy/gitProjects/node-red-dev/package.json:
{
"name": "node-red-contrib-example-lower-case",
"version": "1.0.0",
"description": "node-red-contrib-example-lower-case",
"main": "lower-case.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC"
}
Is this OK? (yes)
这样一个简单的 npm 进行包管理的项目就算建成了。
在package.json文件中添加 node-red 的信息
将如下代码添加到package.json中
"node-red" : {
"nodes": {
"lower-case": "lower-case.js"
}
}
这里可以指名这个node包含了哪些文件。
更新后的package.json文件为:
{
"name": "node-red-contrib-example-lower-case",
"version": "1.0.0",
"description": "node-red-contrib-example-lower-case",
"main": "lower-case.j",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"node-red": {
"nodes": {
"lower-case": "lower-case.js"
}
},
"author": "",
"license": "ISC"
}
创建lower-case 节点的 js 和 html 文件
# wjy @ qifang in ~/gitProjects/node-red-dev/lower-case [22:01:03]
$ touch lower-case.js lower-case.html
# wjy @ qifang in ~/gitProjects/node-red-dev/lower-case [22:01:13]
$ ll
total 8
-rw-r--r-- 1 wjy staff 0B 3 2 22:01 lower-case.html
-rw-r--r-- 1 wjy staff 0B 3 2 22:01 lower-case.js
-rw-r--r-- 1 wjy staff 270B 3 2 21:50 package.json
这样一个Node的基本雏型已经有了。
编写 lower-case.js
module.exports = function(RED) {
function LowerCaseNode(config) {
RED.nodes.createNode(this,config);
var node = this;
node.on('input', function(msg) {
msg.payload = msg.payload.toLowerCase();
node.send(msg);
});
}
RED.nodes.registerType("lower-case",LowerCaseNode);
}
- 这里将这个节点被封装为Node.js模块。 这个模块导出的函数,会在node-red启动并加载节点时被调用。
参数
RED为模块提供对Node-RED运行时api的访问权限。
- 这里
node.on('input', function(msg)将节点注册input事件的侦听器,每当消息到达节点时,这个事件就会被调用,然后它将有效的输入转换为小写,然后调用send函数以在流中传递消息。 - 这里
RED.nodes.registerType("lower-case",LowerCaseNode);用lower-case这个名字将LowerCaseNode注册到Node-Red.
编写 lower-case.html
定义编辑器的节点
<script type="text/javascript">
RED.nodes.registerType('lower-case',{
category: 'function',
color: '#a6bbcf',
defaults: {
name: {value:""}
},
inputs:1,
outputs:1,
icon: "file.png",
label: function() {
return this.name||"lower-case";
}
});
</script>
<script type="text/html" data-template-name="lower-case">
<div class="form-row">
<label for="node-input-name"><i class="fa fa-tag"></i> Name</label>
<input type="text" id="node-input-name" placeholder="Name">
</div>
</script>
<script type="text/html" data-help-name="lower-case">
<p>A simple node that converts the message payloads into all lower-case characters</p>
</script>
将这个节点安装到当前的Node-Red
- 在
~/.node-red执行安装
npm i ~/gitProjects/node-red-dev/lower-case
执行过程:
# wjy @ bogon in ~/.node-red [22:34:12]
$ npm i ~/gitProjects/node-red-dev/lower-case
npm notice created a lockfile as package-lock.json. You should commit this file.
+ node-red-contrib-example-lower-case@1.0.0
added 1 package in 0.73s
- 重新启动Node-Red
wjy @ wujiayudeMBP in ~/gitProjects/node-red on git:master x [22:34:58]
$ npm run start
> node-red@1.2.3 start /Users/wjy/gitProjects/node-red
> node packages/node_modules/node-red/red.js
2 Mar 22:35:01 - [info]
Welcome to Node-RED
===================
2 Mar 22:35:01 - [info] Node-RED version: v1.2.3
2 Mar 22:35:01 - [info] Node.js version: v12.9.1
2 Mar 22:35:01 - [info] Darwin 20.3.0 x64 LE
2 Mar 22:35:01 - [info] Loading palette nodes
2 Mar 22:35:02 - [info] Settings file : /Users/wjy/.node-red/settings.js
2 Mar 22:35:02 - [info] Context store : 'default' [module=memory]
2 Mar 22:35:02 - [info] User directory : /Users/wjy/.node-red
2 Mar 22:35:02 - [warn] Projects disabled : editorTheme.projects.enabled=false
2 Mar 22:35:02 - [info] Flows file : /Users/wjy/.node-red/flows_bogon.json
2 Mar 22:35:02 - [info] Creating new flow file
2 Mar 22:35:02 - [warn]
---------------------------------------------------------------------
Your flow credentials file is encrypted using a system-generated key.
If the system-generated key is lost for any reason, your credentials
file will not be recoverable, you will have to delete it and re-enter
your credentials.
You should set your own key using the 'credentialSecret' option in
your settings file. Node-RED will then re-encrypt your credentials
file using your chosen key the next time you deploy a change.
---------------------------------------------------------------------
2 Mar 22:35:02 - [info] Starting flows
2 Mar 22:35:02 - [info] Started flows
2 Mar 22:35:02 - [info] Server now running at http://127.0.0.1:1880/
- 查看新节点
配置使用这个简单的节点
- 配置需要转换的数据
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wcygFXqD-1614768754068)(evernotecid://621D2FF6-4E72-4E02-9043-55F31F42819B/appyinxiangcom/22553815/ENResource/p1262)]
- 连接
lower-case节点 - 点击部署后开始执行
- 查看结果
这样一个简单的Node就完成了。