博客迁移
功能概述 提供运行时与节点相关的接口,如节点注册、流程增删改查、节点模块处理、上下文等。
所依赖的三方库
- when
- path
- fs
- clone
- util
文件域变量
- @node-red/registry
- 为runtime提供节点注册、响应、发现及管理功能
- credentials
- 封装credentials相关操作
- context
- 提供上下文环境,可定义变量、保存等
- Node
- 为所有新建立的节点提供初始化
API | Function | Description| | ---- | ---- | | // Lifecycle | ---- | |
init | 初始化函数,调用涉及的几个模块的init方法 | | load
| 加载依赖模块 | | // Node registry | ---- | |
createNode | 调用Node模块创建一个节点,并配置credentials | |
getNode | 调用flow模块获取节点 | | eachNode |
调用flow模块遍历所有节点,可传入回调函数 | | getContext |
调用context模块获取上下文 | | installModule | 安装一个模块 | |
uninstallModule | 删除一个模块 | | enableNode
| 启用一个模块 | | disableNode | 禁用一个模块 | | // Node type
registry | ---- | | registerType |
调用registry模块注册节点 | | getType | 调用registry模块获取节点类型 | |
getNodeInfo | 调用registry模块获取节点信息 | | getNodeList
| 调用registry模块获得已安装的node modules| | getModuleInfo |
调用registry模块获得node module信息 | | getNodeConfigs |
调用registry模块获取所有节点的html内容| | getNodeConfig |
调用registry模块获取某个node的html内容| | getNodeIconPath |
调用registry模块获取某个node的图标 | | getNodeIcons |
调用registry模块获取所有节点的图标| | getNodeExampleFlows |
调用registry模块获取示例流程 | | getNodeExampleFlowPath |
调用registry模块获取示例流程目录 | | clearRegistry |
调用registry模块清除registry模块内容 | | cleanModuleList |
调用registry模块清除模块列表 | | // Flow handling | ---- | |
loadFlows | 调用flow模块完成流程加载 | | startFlows
| 调用flow模块完成流程启动 | | stopFlows | 调用flow模块完成流程结束 | |
setFlows | 调用flow模块完成全部流程的设置 | | getFlows
| 调用flow模块返回所有流程 | | addFlow | 调用flow模块返回增加流程 | |
getFlow | 调用flow模块返回获取流程 | | updateFlow
| 调用flow模块更新获取流程 | | removeFlow | 调用flow模块更新删除流程 | |
// Credentials | ---- | | addCredentials
| 调用credentials模块增加凭证 | | getCredentials |
调用credentials模块获取凭证 | | deleteCredentials |
调用credentials模块删除凭证 | | getCredentialDefinition |
调用credentials模块获取凭证定义 | | setCredentialSecret |
调用credentials模块设置凭证密码 | | clearCredentials |
调用credentials模块清除凭证 | | exportCredentials |
调用credentials模块导出凭证 | | getCredentialKeyType |
调用credentials模块获取凭证类型 | | // Contexts | ---- | |
loadContextsPlugin | 调用context模块加载上下文保存插件 | |
closeContextsPlugin | 调用context模块关闭上下文保存插件 | |
listContextStores | 调用context模块罗列上下文保存插件 |涉及文件
- packages\node_modules@node-red\runtime\lib\nodes\index.js
代码分析
参与流程
index.js@nodes@lib@runtime : init(); index.js@nodes@lib@runtime ->> credentials.js@nodes@lib@runtime: init() index.js@nodes@lib@runtime ->> index.js@flows@lib@runtime: init() index.js@nodes@lib@runtime ->> index.js@lib@registry: init() index.js@nodes@lib@runtime ->> context.js@nodes@lib@runtime: init() ``` ```mermaid sequenceDiagram autonumber title: start, 加载流、节点等 other ->>index.js@nodes@lib@runtime: load() index.js@nodes@lib@runtime ->>index.js@lib@registry: load() other ->>index.js@nodes@lib@runtime: registerType() index.js@nodes@lib@runtime ->>index.js@lib@registry: registerType() index.js@lib@registry ->>registry.js@lib@registry: registerNodeConstructor() other ->>index.js@nodes@lib@runtime: loadFlows() index.js@nodes@lib@runtime ->>index.js@flows@lib@runtime: load() other ->>index.js@nodes@lib@runtime: startFlows() index.js@nodes@lib@runtime ->>index.js@flows@lib@runtime: startFlows() other ->>index.js@nodes@lib@runtime: createNode() index.js@nodes@lib@runtime ->>Node.js@nodes@lib@runtime: Node()
title: 安装/卸载模块 other ->>index.js@nodes@lib@runtime : installModule(); index.js@nodes@lib@runtime ->>index.js@lib@registry : installModule(); other ->>index.js@nodes@lib@runtime : uninstallModule(); index.js@nodes@lib@runtime ->>index.js@lib@registry : uninstallModule();
title: 禁用/使用节点 other ->>index.js@nodes@lib@runtime : enableNode(); index.js@nodes@lib@runtime ->>index.js@lib@registry : enableNode(); index.js@lib@registry -->>index.js@nodes@lib@runtime : reportNodeStateChange(); other ->>index.js@nodes@lib@runtime : disableNode(); index.js@nodes@lib@runtime ->>index.js@lib@registry : disableNode(); index.js@lib@registry -->>index.js@nodes@lib@runtime : reportNodeStateChange();
例子
使用html参数创建节点
function MQTTBrokerNode(n) { RED.nodes.createNode(this,n); }
使用html参数创建节点 ```function MQTTBrokerNode(n) {
this.brokerConn = RED.nodes.getNode(this.broker);//根据ID从已注册的节点中找
} ```