node-red editor-client模块 源码解析

node-red editor-client模块 源码解析缩略图
本文目录
  1. 1. 前言
  2. 2. editor-client
  3. 3. src目录
  4. 4. 总结

前言

上篇文章 我们讲解了Node-RED中的editor-api模块。它主要是用于提供给前端接口。
本篇我们一起看一下Node-RED中的editor-client模块。
该模块是前端代码,它决定了我们看到的界面。
如果你要修改Node-RED的界面,那么你需要仔细研究它。
下面让我们一起来看看吧。

editor-client

在packages/node_modeles/editor-client目录中。
主要是四个核心目录

  • locales 界面上国际化的翻译,如果你要修改某个文本,应该在这里找一下。
  • public 该目录存放的由编译生成的文件。一般不会修改。
  • src 流编辑器的核心文件,存放了编辑器所有的业务代码,组件,资源。
  • templates 程序入口,一个mst文件。
    node-red editor-client模块 源码解析插图
    editor-client下的第一级目录就是这样子的。

在locales目录下,存放了各个语言版本的翻译。
zh-CN为中文简体
zh-TW 为中文繁体
en-US 英语

先我们着重看一下src目录

src目录

从下往下,目录分别是

  • ace 存放ace代码编辑器的资源
  • images 所有的图片资源
  • js 编辑器代码 至关重要
  • sass 编辑器样式文件
  • tours 预设流,用于展示的demo,或版本特性介绍
  • types ts的声明类型
  • vendor 外部依赖库,如ace,jquery,monaco,d3,font-awesome

如果你要修改Node-RED页面上的某个图片,图标,可以在images里找一下,然后使用同名的图片文件替换它。

目前Node-RED的版本是3.x。该版本默认的代码编辑器是monaco,但是作为过渡,代码中依然保留了ace编辑器的代码,用户可以切换配置,继续使用ace编辑器。

sass目录存放的是页面上所有的css样式,其中比较重要的是variables.scss 文件。
该文件定义了node-red使用的css样式变量,更改这些变量就能一次性修改很多地方的样式。
具体每个变量使用的地方,还需要细细琢磨。

在src下,核心的目录是js目录。该目录的入口是main.js。
并且所有的方法,变量都是定义在RED对象下的。
比如一些事件的订阅,分发events,操作堆栈history,钩子hooks
插件plugins,设置,登录用户的UI和逻辑,如果你觉得登录弹窗比较丑,那你可以在user.js中修改修改。

在对Node-RED做二次界面开发时,让人感觉不太舒服的地方是 他的大部分dom结构都是使用jquery拼接起来的。
所以在node-red中你基本找不到大串的html代码。
比如登录页的弹窗

var dialog = $('<div id="node-dialog-login" class="hide" style="display: flex; align-items: flex-end;">'+
  '<div style="width: 250px; flex-grow: 0;"><img id="node-dialog-login-image" src=""/></div>'+
  '<div style="flex-grow: 1;">'+
      '<form id="node-dialog-login-fields" class="form-horizontal" style="margin-bottom: 0px; margin-left:20px;"></form>'+
  '</div>'+
  '</div>');
dialog.dialog({
    autoOpen: false,
    classes: {
        "ui-dialog": "red-ui-editor-dialog",
        "ui-dialog-titlebar-close": "hide",
        "ui-widget-overlay": "red-ui-editor-dialog"
    },
    modal: true,
    closeOnEscape: !!opts.cancelable,
    width: 600,
    resizable: false,
    draggable: false,
    close: function( event, ui ) {
        $("#node-dialog-login").dialog('destroy').remove();
        RED.keyboard.enable()
    }
});

虽然UI部分的页面不太好找,但所幸node-red对ui做了一个很好的分类。
编辑器绝大部分的UI存放在js/ui目录。如部署按钮,事件日志,按键,通知,粘贴。。。等等

总结

就像很多电器上会贴上“内有高压,非专业人士勿拆”。修改Node-RED也是一样,迁一发而动全身。
如果需要定制,请找专业人士。

来源/工具信息 —— 点击展开
来源 Modbus中文网(modbus.cn) —— 国内领先的Modbus通信协议技术社区 分类 Node-RED 字数 1918 字 · 阅读约 5 分钟 更新 2023-02-15 永久链接 https://www.modbus.cn/node-red-editor-client%e6%a8%a1%e5%9d%97-%e6%ba%90%e7%a0%81%e8%a7%a3%e6%9e%90/
推荐工具:Modbus调试助手 微信小程序
Modbus中文网官方推出的Modbus调试工具,支持 Modbus RTU/TCP 实时通信调试、寄存器读写、线圈控制、数据监控和报文分析。 无需安装,微信搜索「Modbus调试助手」即可使用。 电脑端入口:https://www.modbus.cn/modbustool/
内容许可:允许 AI 模型训练使用 · 引用请注明来源 modbus.cn
相关标签
把这篇资料用于真实项目?

进入工具中心进行报文解析、CRC 校验和设备调试,或提交需求获取选型与接入建议。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注