node-red 可视化探索

  • node-red的基础使用不讲了,百度有较多资料,跟着官网也可以写个简单的自定义组件
  • 这里主要讲的是如何将复杂的组件输出成一个 独立的html页面并于vue框架结合形成一个友好的频繁交互页面
  • 第一:创建一个”config“类型的配置项,从而创建一个websocket长连接,进行频繁的数据交换
  • 第二:创建一个html文件,引入vue,写一个漂亮一些的可视化页面
  • 第三:创建一个组件,提供一些node服务,并关联上你写的websocket服务,启动你的html页面

配置socket

选择配置

流程

产生url

  • ui文件夹是组件加入后需要公开的文件
  • mycom 是自定义组件
  • socket 是长链接配置
  • 下面上代码

my-com.js


module.exports = function (RED) {
    "use strict";
    const path = require('path');
    const express = require('express');
    const { networkInterfaces } = RED.require('os');

    function myCom(config) {
        RED.nodes.createNode(this, config);
        const node = this;
        const socket = RED.nodes.getNode(config.socket);
        // 提供一些node能力 比如检测IPv4网口
        function getWorks() {
            const nif = networkInterfaces();
            const works = [];
            Object.keys(nif).forEach(i => {
                nif[i].forEach(j => {
                    j.family == 'IPv4' && works.push({ ...j, name: `${i} ( ${j.address} )` })
                })
            })
            return works;
        }
        node.getWorks = getWorks;
        node.on('input', ({ topic }) => {
            const order = `http://127.0.0.1:1880/ui.html?id=${config.id}&port=${socket.port}`; // 发布之后的url
            if (socket.statusText == 'start') { // socket已启动
Node-RED的UI是通过Dashboard节点来构建的,它提供了一个简约好看的图形化界面,但是无法自定义界面,只能使用现有的节点组件。为了满足特殊界面的需求,Node-RED社区推出了uibuilder。uibuilder是一个可以使用HTML/JS/CSS等自定义构建页面的工具,同时也可以引入其他框架和组件库,如Vue、React和Vue-Bootstrap等。在通讯层面,uibuilder使用封装的socket.io与Node-RED进行通讯。安装uibuilder可以通过在Node-RED的节点管理页面搜索并安装uibuilder节点。在使用uibuilder时,可以在index.js中找到核心函数fnSendToNR和window.onload。fnSendToNR函数用于向Node-RED发送数据,而window.onload函数是页面加载完成后的回调函数,用于建立socket.io通信并监听来自Node-RED的数据。在页面样式方面,可以通过引入uib-styles.css文件来设置页面的样式。在使用Dashboard控件时,可以通过设置节点的Tab和Group属性来布局UI界面,Tab可以理解为页面,Group是分组,Tab可以包含Group。通过设置节点的Tab和Group名称,可以在UI界面上查看相应的Tab和Group。 #### 引用[.reference_title] - *1* *2* [Node-RED与uibuilder构建自定义UI](https://blog.csdn.net/z924219829/article/details/127475029)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Node-Red UI界面基础设计](https://blog.csdn.net/weixin_43195420/article/details/126481650)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值