NodeRed使用心得,实现增删改查等

使用场景介绍

在VUE中使用nodeRed实现对节点的 增删改查等功能,且储存成功之后下点击时启动对应流程

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

安装与配置

1.安装NodeRed
npm install -g --unsafe-perm node-red
安装完成后,你可以通过运行以下命令来启动Node-RED
node-red-start

2. 配置文件
Node-RED的主要配置文件是settings.js。这个文件位于Node-RED的安装目录下,或者在你的用户目录下的.node-red文件夹中。你可以通过编辑这个文件来自定义Node-RED的行为。

首先就是部署了,要真正的实现且储存成功之后下点击时启动对应流程还是要麻烦后端同学部署一下(具体如何部署我也不清楚)
后端部署之后会提供一个地址 如:

http://192.168.1.19:1880/#flow/ff07562cd6ebb566
http://192.168.1.19:1880 为后端提供的地址,ff07562cd6ebb566为当前流程的ID已启动对应的流程

拖动一些节点右上角后点击部署后,会自动存储一个json文件

[
    {
        "id": "8587ac557a88ac60",//流程ID
        "type": "tab",
        "label": "流程 2", //流程名称
        "disabled": false,
        "info": "",
        "env": []
    },
    {
        "id": "de312079982d37a9",
        "type": "debug",
        "z": "8587ac557a88ac60",
        "name": "debug 3",//节点类型
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "",
        "statusType": "auto",
        "x": 1000,//节点位置
        "y": 300,//节点位置
        "wires": []
    },
    {
        "id": "b3f87d7d2496d6b3",
        "type": "http request",
        "z": "8587ac557a88ac60",
        "name": "Get News Details",
        "method": "GET",
        "ret": "obj",
        "paytoqs": "ignore",
        "url": "http://shop.pulisi.sd.cn:8088/pleaseds/stationlist?strwhere=",
        "tls": "",
        "persist": false,
        "proxy": "",
        "insecureHTTPParser": false,
        "authType": "",
        "senderr": false,
        "headers": [],
        "x": 370,
        "y": 360,
        "wires": [
            [
                "6f54cda79df1511a"
            ]
        ]
    },
    {
        "id": "10a4b6f9d7cb092c",
        "type": "inject",
        "z": "8587ac557a88ac60",
        "name": "",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "",
        "payloadType": "date",
        "x": 110,
        "y": 300,
        "wires": [
            [
                "b3f87d7d2496d6b3"
            ]
        ]
    },
    {
        "id": "6f54cda79df1511a",
        "type": "function",
        "z": "8587ac557a88ac60",
        "name": "function 3",
        "func": "\nreturn msg;",
        "outputs": 1,
        "timeout": 0,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 680,
        "y": 360,
        "wires": [
            [
                "de312079982d37a9"
            ]
        ]
    }
]

代码演示增删改查

在以上完成 安装 部署 存储等 就可以进行编程了(完整代码我会贴在我的雨雀笔记!毕竟是公司代码需要一些保密)

查询出对应节点

  getlist() {
      axios.get('http://192.168.1.19:1880/flows') 这里是替换你后端的api
        .then(res => {
          console.log(res, 'res');
          // 将API返回的数据(res.data)进行过滤和映射处理,生成一个新的数组赋值给this.SceneLinkageList
          this.SceneLinkageList = res.data
            // 过滤出type为'tab'且label存在的项
            .filter(item => item.type === 'tab' && item.label)
            // 对过滤后的每一项进行映射,生成新的对象数组
            .map(item => ({
              // 新对象的id属性,取自原项的id
              id: item.id,
              // 新对象的label属性,取自原项的label
              label: item.label,
              // 新对象的description属性,取自原项的info,如果info不存在则默认为空字符串
              description: item.info || '',
              // 新对象的status属性,根据原项的disabled属性决定,如果disabled为true则为'disabled',否则为'enabled'
              status: item.disabled ? 'disabled' : 'enabled'
            }));
          // 将处理后的SceneLinkageList数组复制一份给filteredSceneLinkageList,用于后续的过滤显示
          this.filteredSceneLinkageList = [...this.SceneLinkageList]; 
        })
        .catch(error => {
          console.error('请求失败:', error);
        });
    },

启动对应流程
将上一步的json数据保存后 渲染到页面后点击时传值

launchNodeRED(rule) {
  console.log(rule, 'rule');

  if (!rule.id) {
    console.error('该规则没有关联的流程 ID');
    this.$message.error('无法启动流程:未指定流程 ID');
    return;
  }

  if (this.currentNodeREDWindow && !this.currentNodeREDWindow.closed) {
    this.currentNodeREDWindow.close();
  }

  const nodeREDUrl = `http://192.168.1.19:1880/#flow/${rule.id}`;
  console.log('Node-RED URL:', nodeREDUrl);

  try {
    this.currentNodeREDWindow = window.open(nodeREDUrl, 'nodeREDWindow');

    if (!this.currentNodeREDWindow) {
      throw new Error('弹出窗口被阻止');
    }
  } catch (error) {
    console.error('打开 Node-RED 流程失败:', error);
    this.$message.error('启动流程失败,请检查您的浏览器设置');
  }
},

删除

axios.delete(http://192.168.1.19:1880/flow/${rule.id});

新增与编辑
async submitForm() {
try {
const valid = await this.$refs.ruleForm.validate();
if (!valid) return;

    if (this.dialogTitle === '新增规则') {
      const response = await axios.post('http://192.168.1.19:1880/flow', {
        label: this.formData.name,
        info: this.formData.description,
        nodes: []
      });

      const newFlow = response.data;
      this.SceneLinkageList.push({
        id: newFlow.id,
        label: newFlow.label,
        description: newFlow.info,
        status: 'enabled'
      });

      this.$message.success('新流程创建成功');
      this.launchNodeRED({ id: newFlow.id });
    } else {
      const response = await axios.get(`http://192.168.1.19:1880/flow/${this.formData.id}`);
      const flow = response.data;
      flow.label = this.formData.name;
      flow.info = this.formData.description;
      await axios.put(`http://192.168.1.19:1880/flow/${this.formData.id}`, flow);

      const updatedRule = this.SceneLinkageList.find(rule => rule.id === this.formData.id);
      if (updatedRule) {
        updatedRule.label = this.formData.name;
        updatedRule.description = this.formData.description;
      }

      this.$message.success('规则修改成功');
    }

    this.dialogVisible = false;
    this.getlist(); // Refresh the list after adding or editing
  } catch (error) {
    console.error('提交表单失败:', error);
    this.$message.error('操作失败,请重试');
  }
},

这里只做简单的介绍,看不懂把代码喂给AI他也能给你解答

如何在nodeRed中运行想要的结果

关于noderRed如何配置节点并运行?
在这里插入图片描述

1.首先需要一个能触发的节点如 inject 拖到画布中
2.配置HTTP节点,自定义调整 请求方式 URL地址 返回值等 无需过多配置
3.配置function放(可省略)
4.debug节点打印输出的内容
5.将他们如图依次连接后,点击部署后, 点击 inject 左侧按钮即可打印接口返回的结果
在这里插入图片描述

如何个性化配置nodeRed

nodeRed下载后 网页标题与页面标题都是初始化的
在这里插入图片描述
如果要修改则需要去nodeRed安装目录找到settings.js文件

如何找到nodeRed安装目录?
 常见的默认安装目录:
- Windows: `C:\Users\[用户名]\.node-red`
- Linux: `/home/[用户名]/.node-red`
- Mac: `/Users/[用户名]/.node-red`

找到后打开文件找到 editorTheme: {}在这个里面添加你要的值,如

 page: {
        title: "规则设计器"
    },
    header: {
        title: "规则设计器"
    },

最后就是安装个性化插件 以及 设置语言,设置中皆可自定义调整
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/943823.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

金仓数据库安装-Kingbase v9-centos

在很多年前有个项目用的金仓数据库,上线稳定后就没在这个项目了,只有公司的开发环境还在维护,已经好多年没有安装过了,重温一下金仓数据库安装,体验一下最新版本,也做一个新版本的试验环境; 一、…

“AI考训分析系统:让考试和训练更智能、更高效

大家好,我是你们的老朋友,一个资深的产品经理。今天咱们来聊聊一个教育领域的新宠儿——AI考训分析系统。这个系统可是个厉害角色,它不仅能帮学生提高学习效率,还能让老师们的工作变得更加轻松。下面我就跟大家伙儿分享一下这个系…

UE5 丧尸类杂兵的简单AI

A、思路 1、关卡初始化时,自动产生随机巡逻点,小兵到达后,去另一个随机巡逻点。 2、加入视力,发现主角后,不再巡逻,而开始追击主角并攻击。条件循环。 3、加入听力。主角的奔跑与射击会产生噪音&#xf…

【Compose multiplatform教程11】【组件】TextField组件

查看全部组件​编辑https://blog.csdn.net/b275518834/article/details/144751353 TextField 功能说明:提供用户输入文本的功能,可设置默认文本、提示文本以及文本样式,方便获取用户输入的内容,常用于数据采集场景。示例场景&am…

C# 将图片转换为PDF文档

将图片(JPG、PNG)转换为PDF文件可以帮助我们更好地保存和分享图片。此外,PDF文件还具有强大的安全特性,将图片转换为PDF后,我们可以通过设置密码来文件内容不被泄露。本文将介绍如何将JPG/PNG图片转换为PDF文档。 文章…

计算机的错误计算(一百九十三)

摘要 用两个大模型化简计算 其中有关数字取弧度,结果保留5位有效数字。一个大模型进行了一次化简,另外一个大模型没有化简。两个大模型​​​​​均给出错误结果。 例1. 化简计算 其中有关数字取弧度,结果保留5位有效数字。 下面是与一个…

大模型-ChatGLM-6B模型部署与微调记录

大模型-ChatGLM-6B模型部署与微调记录 模型权重下载: 登录魔塔社区:https://modelscope.cn/models/ZhipuAI/chatglm2-6b 拷贝以下代码执行后,便可快速权重下载到本地 # 备注:最新模型版本要求modelscope > 1.9.0 # pip instal…

梳理你的思路(从OOP到架构设计)_介绍Android的Java层应用框架01

目录 1、传统无框架 2、 单层框架 3、 复合型框架 4、 双层框架 1、传统无框架 传统上,在没有框架的环境里,应用程序(Application,简称AP或App)会调用平台(如Linux或Windows等)平台的函数,如下图所示: 由于控制权掌握在App开…

基于SpringBoot在线音乐系统平台功能实现十七

一、前言介绍: 1.1 项目摘要 随着互联网技术的迅猛发展和普及,人们对音乐的获取和欣赏方式发生了巨大改变。传统的音乐播放方式,如CD、磁带或本地下载的音乐文件,已经不能满足用户日益增长的需求。用户更希望通过网络直接获取各…

SpringBoot配置文件、热部署、YAML语法、配置文件值注入

SpringBoot的配置文件 文章目录 SpringBoot的配置文件1.SpringBoot的热部署2.配置文件2.1配置文件的作用2.2YAML配置文件:2.3YAML 与 JSON 和 XML 的对比 3.YAML语法3.1键值对3.2值的写法3.3对象、Map(属性和值)(键值对&#xff0…

Linux | 零基础Ubuntu安装部署 Nginx服务

目录 介绍 安装部分 更新 安装 查看状态 测试网页 配置部分 备份默认文件 编辑文件 创建站点文件夹 编辑默认文件 Nginx检测 重新加载Nginx 测试网站 介绍 Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。…

云边端一体化架构

云边端一体化架构是一种将云计算、边缘计算和终端设备相结合的分布式计算模型。该架构旨在通过优化资源分配和数据处理流程,提供更高效、更低延迟的服务体验。 下面是对这个架构的简要说明: 01云计算(Cloud Computing) — 作为中心…

springboot 工程使用proguard混淆

在 Maven 构建的 Spring Boot 项目中使用 ProGuard 进行代码混淆时,需要正确配置 Maven 插件和 ProGuard 的混淆规则。由于 Spring Boot 项目通常会依赖大量的反射机制和动态代理,因此必须特别小心确保这些部分在混淆过程中不会被破坏。 步骤 1&#xf…

vue3和springboot使用websocket通信

前端端口&#xff1a;9090 后端端口&#xff1a;8080 vue3 引入依赖&#xff1a; npm install sockjs-client stomp/stompjs vue页面 <template><div><h1>WebSocket 示例</h1><button click"sendMessage">发送消息</button>…

【HarmonyOS】鸿蒙arrayBuffer和Uint8Array互相转化

【HarmonyOS】鸿蒙arrayBuffer和Uint8Array互相转化 前言 ArrayBuffer ArrayBuffer内部包含一块Native内存&#xff0c;该ArrayBuffer的JS对象壳被分配在虚拟机本地堆&#xff08;LocalHeap&#xff09;。与普通对象一样&#xff0c;需要经过序列化与反序列化拷贝传递&#x…

Linux 搭建 nginx+keepalived 高可用 | Nginx反向代理

注意&#xff1a;本文为 “Linux 搭建 nginxkeepalived (主备双主模式) 高可用 | Nginx反向代理” 相关文章合辑。 KeepalivedNginx实现高可用&#xff08;HA&#xff09; xyang0917 于 2016-09-17 00:24:15 发布 keepalived 的 HA 分为抢占模式和非抢占模式&#xff0c;抢占…

Cocos Creator 试玩广告开发 第二弹

上一篇的项目是2d的&#xff0c;现在谈谈对于3d试玩项目的一些经历。 相对于2d来说&#xff0c;3d的项目更接近于Unity的开发&#xff0c;但是也有很多不一样的地方&#xff0c;具体的也可以参考Cocos给他官方示例。 Unity 开发者入门 Cocos Creator 快速指南 | Cocos Creator…

输入框去掉角标

前言 正常情况下&#xff0c;HTML textarea 多行文本输入框会存如下图所示图标&#xff0c; 用户可拉动它改变高度&#xff0c;这是我们不想看到的&#xff0c;所以要去掉它。 去掉后&#xff1a; 解决方案 设置 resize 属性即可&#xff0c;如下代码所示&#xff1a; <…

ABAP实战案例-选择屏幕SUBSCREEN中搜索帮助失效的解决方法

案列背景&#xff1a; 选择屏幕作为SUBSCREEN时&#xff0c;搜索条件中的域值或者F4的搜索帮助会失效。 优化前示例与效果截图&#xff1a; * * SELECTION-SCREEN " 选择屏幕定义 *SELECTION-SCREEN BEGIN OF SCREEN 900 AS SUBSCREEN.SELECTION-SCREEN BEGIN OF BL…

顶顶通呼叫中心中间件mod_cti模块安全增强,预防盗打风险(mod_cti基于FreeSWITCH)

文章目录 前言联系我们mod_cti版本支持安全加强说明 前言 FreeSWITCH暴露在公网最大的风险就是被不法之人盗打 出现盗打的主要原因以下几点&#xff1a; 分机密码太简单或者密码泄露了拨号方案配置不合理sofia配置错误 所以我们给顶顶通呼叫中心中间件添加了安全加强功能&am…