Ricon组态系统完整技术文档

0 阅读20分钟

目录

  1. 系统概述
  2. 技术架构
  3. 核心功能
  4. 组件系统
  5. 开发指南
  6. 最佳实践
  7. 故障排查
  8. 性能优化
  9. 安全指南

1. 系统概述

1.1 产品简介

Ricon组态系统是一个基于Web技术的可视化组态编辑和实时监控平台。系统采用纯前端架构,无需安装客户端,支持在浏览器中直接进行组态画面编辑、实时数据监控和场景管理。

1.2 核心优势

  • 零部署成本 - 纯Web架构,浏览器直接访问
  • 实时数据监控 - 支持WebSocket、MQTT、HTTP多种通信方式
  • 丰富的组件库 - 内置200+工业组件和图元
  • 高性能渲染 - 基于Konva.js的Canvas 2D渲染引擎
  • 易于集成 - 标准的RESTful API和WebSocket协议
  • 响应式设计 - 支持PC、平板、移动端多种设备
  • 模块化架构 - 核心功能拆分为独立模块,便于维护和扩展
  • 安全可靠 - 内置XSS和CSRF防护机制

1.3 适用场景

  • 🏭 工业监控 - 生产线监控、设备状态展示
  • 🏢 楼宇自控 - 智能楼宇、能耗监控
  • 🌊 水务管理 - 污水处理、供水监控
  • 电力系统 - 电力监控、配电管理
  • 🚦 交通管控 - 智慧交通、信号控制
  • 🌐 物联网应用 - IoT设备监控、数据可视化
  • 📊 数据中心 - 服务器状态监控、网络设备管理
  • 🏥 医疗设备 - 医疗设备监控、患者生命体征监测

1.4 技术栈

前端框架与库

技术版本用途特点
Konva.js5.x2D画布渲染引擎高性能图形绘制,支持复杂交互
Layui2.8UI组件框架企业级UI,丰富的组件库
jQuery3.xDOM操作简化DOM操作和事件处理
ECharts5.3.2数据可视化专业的图表库,支持实时数据
MQTT.js4.xMQTT客户端轻量级消息协议,适合IoT设备

通信协议

协议通信模式适用场景性能特点
WebSocket实时双向高频数据更新低延迟、高实时性
MQTT发布/订阅IoT设备监控轻量级、适合大量设备
HTTP/HTTPS请求/响应低频数据更新兼容性好、实现简单

核心技术特性

  • Canvas 2D渲染 - 基于Konva.js的高性能图形渲染引擎
  • JSON配置驱动 - 场景和组件采用JSON格式存储,便于序列化和传输
  • SafeJSON解析 - 内置 window.SafeJSON 提供安全的JSON解析:
    • parse() - 标准JSON解析
    • parseStrict() - 严格模式解析
    • parseFlexible() - 兼容历史非严格JSON格式
  • 统一配置中心 - 集中管理所有配置项,支持动态加载和热更新
  • 初始化管理器 - 智能管理模块依赖关系,优化初始化顺序
  • 动态模块加载 - 按需加载模块,减少初始加载时间
  • 异步资源加载 - 优化资源加载顺序,提高首屏加载速度
  • 内存泄漏防护 - 自动跟踪和清理资源,提高系统稳定性
  • 安全增强 - 内置XSS和CSRF防护机制
  • 模块化架构 - 核心功能拆分为14个独立模块,采用协调器模式管理
  • 代码质量保障 - 严格模式、规范命名、统一代码风格、完整注释

2. 技术架构

2.1 系统架构图

┌─────────────────────────────────────────────────┐
│            Web浏览器(客户端)                    │
├─────────────────────────────────────────────────┤
│  ┌──────────┐  ┌──────────┐  ┌──────────┐     │
│  │ 编辑器   │  │ 预览页面 │  │ 监控页面 │     │
│  │editor.html│ │preview.html││view.html │     │
│  └──────────┘  └──────────┘  └──────────┘     │
│         │             │             │          │
│  ┌─────────────────────────────────────┐      │
│  │     核心引擎层(Konva + 业务逻辑)   │      │
│  │  - stageOperation.js                │      │
│  │  - stageView.js                     │      │
│  │  - moduleAnimation.js               │      │
│  └─────────────────────────────────────┘      │
│         │             │             │          │
│  ┌─────────────────────────────────────┐      │
│  │     系统优化层                         │      │
│  │  - ConfigCenter.js (配置中心)        │      │
│  │  - InitManager.js (初始化管理)       │      │
│  │  - ModuleManager.js (模块管理)       │      │
│  │  - ResourceLoader.js (资源加载)      │      │
│  │  - MemoryLeakProtector.js (内存防护) │      │
│  │  - SecurityManager.js (安全管理)     │      │
│  └─────────────────────────────────────┘      │
│         │             │             │          │
│  ┌─────────────────────────────────────┐      │
│  │     通信层                           │      │
│  │  - webSocketClient.js               │      │
│  │  - mqttClient.js                    │      │
│  │  - httpClient.js                    │      │
│  └─────────────────────────────────────┘      │
└─────────────────┬──────────────────────────────┘
                  │
        ┌─────────┴─────────┐
        │                   │
┌───────▼──────┐   ┌───────▼──────┐
│  后端API服务  │   │  WebSocket   │
│ (RESTful)    │   │   MQTT服务器  │
└──────────────┘   └──────────────┘

2.2 模块化架构设计

核心模块划分

stageOperation.js 已重构为模块化架构,包含 14个独立功能模块

模块分类模块文件功能说明主要方法
核心功能stageInit.js场景初始化initStage, initResolution
stageProperties.js场景属性配置initStageProperties, setStageSize
stageConfig.js场景配置管理setStageCache, getStageJson
通信数据stageCommunication.js通信配置管理initCommunicationConfig
stageUtils.js工具函数getStageAllDataKey, getStageBase64
用户交互stageViewControl.js视图控制stageMaxMin, addMouseListens
stageKeyboard.js键盘事件setStageKeyboardEvent
stageGuides.js辅助线getAnchorArray, drawGuides
组件操作stageModule.js组件管理addModuleToStage, deleteModule
stageAlign.js组件对齐alignModule
moduleAttributes.js组件属性showModuleAttr, setModuleAttr
系统功能stageUndoRedo.js撤销恢复ctrlZ, ctrlY
stageImportExport.js导入导出import, export
stagePanels.js组件库面板setBasicPanel, setGraphicPanel

架构优势

  1. 代码组织结构优化

    • 单一职责原则 - 每个模块只负责一个特定功能领域
    • 高内聚低耦合 - 模块内部功能紧密相关,模块间依赖最小化
    • 清晰的依赖关系 - 明确定义的模块加载顺序和依赖关系
  2. 可维护性提升

    • 易于定位问题 - 功能模块化,bug定位更快速准确
    • 独立升级维护 - 单个模块的更新不会影响其他功能
    • 代码复用性强 - 通用模块可在其他项目中直接使用
  3. 可扩展性增强

    • 插件化架构 - 新功能可以通过独立模块形式添加
    • 配置驱动 - 通过配置文件即可启用/禁用特定功能
    • 接口标准化 - 统一的模块接口规范,便于团队协作

2.3 核心模块说明

2.3.1 编辑器模块 (editor.html)

功能职责:

  • 组态画面编辑和设计
  • 组件库管理和组件选择
  • 属性配置和场景管理
  • 导入导出和模板管理

关键文件:

  • assets/js/modules/editor.js - 编辑器业务逻辑
  • assets/js/core/stageOperation.js - 场景操作核心

2.3.2 监控模块 (view.html)

功能职责:

  • 场景渲染和数据展示
  • 实时数据接收和更新
  • 动画效果处理
  • 用户交互响应

关键文件:

  • assets/js/modules/view.js - 监控页面逻辑
  • assets/js/core/stageView.js - 场景视图渲染
  • assets/js/core/moduleAnimation.js - 动画处理

2.3.3 通信模块

WebSocket客户端 (webSocketClient.js)

  • 自动重连机制
  • 心跳保活
  • 连接状态管理
  • 消息队列处理

MQTT客户端 (mqttClient.js)

  • WebSocket协议连接
  • 主题订阅/取消订阅
  • QoS质量等级支持
  • 认证和加密

HTTP客户端 (httpClient.js)

  • 轮询请求支持
  • 自定义请求头和参数
  • GET/POST/PUT/DELETE方法
  • 错误重试机制

3. 核心功能

3.1 编辑器功能

3.1.1 画布操作

画布缩放

  • 鼠标滚轮缩放(需按住Ctrl键)
  • 工具栏缩放滑块(0-500%)
  • 快捷键支持

画布平移

  • 空格键+鼠标拖拽
  • 画布边缘拖拽(当内容超出可视区域)

辅助功能

  • 网格显示/隐藏
  • 对齐辅助线
  • 标尺显示(可选)

3.1.2 组件操作

基础操作

  • 拖拽添加组件
  • 点击选中组件
  • 拖拽移动位置
  • 拖拽调整大小
  • 右键菜单操作

多选操作

  • Ctrl+点击 多选
  • Ctrl+A 全选
  • 框选(鼠标拖拽选择区域)

对齐操作

  • 左对齐、右对齐、居中对齐
  • 上对齐、下对齐、垂直居中
  • 水平分布、垂直分布

图层操作

  • 上移一层、下移一层
  • 置顶、置底
  • 图层树管理

3.1.3 属性配置

通用属性

  • 位置和大小(X、Y、Width、Height)
  • 旋转角度
  • 透明度
  • 边框和填充
  • 字体样式(字体、大小、颜色、粗细)

数据绑定

  • 硬件设备数据点选择
  • 数据缩放配置
  • 条件判断配置
  • 状态颜色映射

事件配置

  • 点击事件(写值、跳转、脉冲)
  • 悬停效果
  • 自定义事件

3.1.4 撤销恢复

系统实现了基于栈的撤销/恢复机制:

// 使用ArrayStack实现
var stackZ = new ArrayStack();  // 撤销栈
var stackY = new ArrayStack();  // 恢复栈

// 支持的操作
- 组件添加/删除
- 属性修改
- 位置/大小调整
- 图层操作

快捷键:

  • Ctrl+Z - 撤销
  • Ctrl+Y - 恢复

3.2 监控功能

3.2.1 实时数据更新

更新机制:

  • 基于WebSocket的实时推送
  • 基于MQTT的发布订阅
  • 基于HTTP的轮询请求
  • 支持多种通信方式同时使用

更新流程:

数据接收 → 数据解析 → 场景数据更新 → 组件数据绑定 → 画面重绘

3.2.2 预览测试数据输入(preview.html)

预览页面支持在顶部输入框中手动输入测试数据并应用到场景。

  • 推荐格式(标准 JSON){"a03":0,"a04":98,"d3a002":8}
  • 兼容格式(历史写法){a03:0,a04:98,d3a002:8}(key 不加引号)

说明:兼容解析由 window.SafeJSON.parseFlexible() 支持,避免使用 eval

3.2.3 动画效果

支持的动画类型:

  • 旋转动画 - 风机、电机等旋转设备
  • 流动动画 - 水流、电流等流动效果
  • 闪烁动画 - 报警灯、指示灯闪烁
  • 渐变动画 - 颜色渐变、透明度变化

动画配置:

  • 动画速度控制
  • 动画方向设置
  • 动画循环模式
  • 动画触发条件

3.2.4 状态指示

颜色状态

  • 根据数据值显示不同颜色
  • 支持多段颜色映射
  • 支持渐变色

图片状态

  • 根据数据值切换图片
  • 支持多状态图片
  • 支持状态图标

数值显示

  • 实时数值显示
  • 单位显示
  • 数据格式化

3.3 场景管理

3.3.1 场景保存

保存内容:

  • 场景JSON数据(所有组件和配置)
  • 场景缩略图(Base64编码)
  • 绑定数据点列表
  • 场景元数据(名称、描述、分辨率等)

保存格式:

{
    "stageId": "stage_001",
    "stageName": "场景名称",
    "width": 1920,
    "height": 1080,
    "components": [...],
    "config": {...}
}

3.3.2 场景加载

加载方式:

  • 通过场景ID加载
  • 从模板库加载
  • 导入JSON文件

加载流程:

场景IDAPI请求 → 获取场景数据 → 解析JSON → 渲染场景

3.3.3 场景模板

模板功能:

  • 保存常用场景为模板
  • 从模板快速创建场景
  • 模板分类管理
  • 模板分享

4. 组件系统

4.1 组件分类

4.1.1 基础组件

文本组件

  • 静态文本显示
  • 支持数据绑定显示
  • 丰富的字体样式配置

按钮组件

  • 点击事件配置
  • 写值功能
  • 画面跳转
  • 脉冲信号发送

图片组件

  • 静态图片
  • 动态图片切换
  • 状态图片映射

图表组件

  • ECharts图表集成
  • 柱状图、折线图、饼图等
  • 实时数据更新
  • 丰富的图表配置

4.1.2 图元组件

电气图元

  • 丰富的工业电气符号
  • 支持自定义图元
  • 状态颜色映射

开关组件

  • 开关图标
  • 开关状态控制
  • 点击切换

指示灯组件

  • 状态指示灯
  • 多状态颜色
  • 闪烁效果

4.1.3 高级组件

表格组件

  • 数据表格展示
  • 实时数据更新
  • 排序和筛选

iframe组件

  • 嵌入外部网页
  • 嵌入ECharts图表
  • 嵌入数据表格

动画组件

  • 旋转动画
  • 流动动画
  • 闪烁动画

4.2 组件属性配置

4.2.1 通用属性

属性类型说明
xNumberX坐标位置
yNumberY坐标位置
widthNumber宽度
heightNumber高度
rotationNumber旋转角度(度)
opacityNumber透明度(0-1)
visibleBoolean是否可见

4.2.2 数据绑定属性

硬件数据点绑定

  • 从硬件设备树选择变量
  • 支持虚拟变量绑定
  • 支持多数据点绑定

数据缩放配置

  • 线性缩放
  • 自定义映射规则
  • 单位转换

条件判断配置

  • 多条件判断
  • 逻辑运算符(AND、OR)
  • 条件组合

4.2.3 样式属性

字体样式

  • 字体族
  • 字体大小
  • 字体颜色
  • 字体粗细
  • 字体样式(正常、斜体)

边框样式

  • 边框宽度
  • 边框颜色
  • 边框样式(实线、虚线等)

填充样式

  • 填充颜色
  • 渐变填充
  • 图片填充

4.3 组件开发

4.3.1 开发流程

  1. 创建编辑模块

    • modules/edit/ 目录创建HTML和JS文件
    • 实现属性编辑界面
  2. 注册组件

    • assets/json/basic.json 添加组件定义
    • 配置组件图标和属性
  3. 实现渲染逻辑

    • stageOperation.js 添加创建逻辑
    • stageView.js 添加渲染逻辑
  4. 实现数据更新

    • stageView.js 实现数据更新方法
    • 处理WebSocket数据推送

4.3.2 组件模板

编辑模块模板:

// editMyComponent.js
function initMyComponentEditor(moduleObject) {
    // 初始化编辑器
    // 绑定事件
    // 加载默认值
}

function saveMyComponentConfig(moduleObject) {
    // 保存配置
    // 更新组件属性
}

组件注册模板:

{
    "type": "MyComponent",
    "name": "我的组件",
    "icon": "assets/images/icons/my-component.png",
    "attributes": {
        "width": 100,
        "height": 100,
        "color": "#333333"
    }
}

5. 开发指南

5.1 代码结构

5.1.1 核心文件说明

文件说明主要功能
stageOperation.js场景操作核心组件创建、属性配置、场景管理
stageView.js场景视图渲染场景渲染、数据更新、动画处理
webSocketClient.jsWebSocket客户端连接管理、消息处理
mqttClient.jsMQTT客户端连接管理、主题订阅
httpClient.jsHTTP客户端请求管理、轮询处理
moduleAnimation.js动画处理旋转、流动、闪烁等动画

5.1.2 模块化设计

核心层(Core)

  • 提供基础功能和API
  • 不依赖业务逻辑
  • 可复用的通用模块

业务层(Modules)

  • 编辑器业务逻辑
  • 监控页面逻辑
  • 组件编辑逻辑

工具层(Common)

  • 通用工具函数
  • 数据格式化
  • 工具类封装

5.2 开发规范

5.2.1 命名规范

文件命名:

  • HTML文件:kebab-case(如:edit-button.html
  • JavaScript文件:camelCase(如:editButton.js
  • CSS文件:kebab-case(如:edit-button.css

变量命名:

  • 变量名:cameCase(如:stageOper
  • 常量:UPPER_SNAKE_CASE(如:MAX_SIZE
  • 类名:PascalCase(如:StageOperation

5.2.2 代码风格

JavaScript风格:

// 使用严格模式
"use strict";

// 使用函数表达式而非函数声明(在某些模块中)
var myFunction = function() {
    // 代码
};

// 添加注释
/**
 * 函数说明
 * @param {type} param - 参数说明
 * @returns {type} 返回值说明
 */

注释规范:

  • 文件头注释(说明文件用途)
  • 函数注释(参数和返回值)
  • 关键代码注释(复杂逻辑说明)

5.3 调试技巧

5.3.1 浏览器调试

开发者工具:

  • F12 打开开发者工具
  • Console查看日志和错误
  • Network查看网络请求
  • Sources设置断点调试

常用调试代码:

// 查看场景对象
console.log(stageOper.stage);

// 查看组件列表
console.log(stageOper.stage.find('Group'));

// 查看通信配置
console.log(stageOper.stage.attrs.communicationConfig);

// 查看WebSocket连接
console.log(webSocketClient);

5.3.2 日志记录

系统在关键位置添加了console.log,便于调试:

  • 组件创建日志
  • 数据更新日志
  • 通信连接日志
  • 错误日志

6. 最佳实践

6.1 场景设计

6.1.1 布局设计

  • 分层设计 - 使用图层分组管理组件
  • 响应式布局 - 考虑不同屏幕尺寸
  • 视觉层次 - 重要信息突出显示
  • 一致性 - 保持风格统一

6.1.2 组件使用

  • 合理使用组件 - 根据功能选择合适的组件
  • 组件数量控制 - 单个场景建议不超过500个组件
  • 组件命名 - 为组件设置有意义的名称
  • 组件复用 - 重复使用的元素创建模板

6.2 数据管理

6.2.1 数据点管理

  • 数据点命名 - 使用有意义的数据点名称
  • 数据点分组 - 按功能或设备分组管理
  • 数据更新频率 - 根据实际需求设置合理的更新频率
  • 数据缓存 - 合理使用缓存减少API调用

6.2.2 通信配置

  • 选择合适的通信协议 - 根据数据更新频率选择
  • 连接管理 - 合理管理WebSocket连接
  • 错误处理 - 实现完善的错误处理机制
  • 重试策略 - 实现指数退避重试策略

6.3 性能优化

6.3.1 渲染优化

  • 减少重绘 - 合理使用图层分组
  • 优化动画 - 避免复杂计算在动画循环中
  • 图片优化 - 使用合适的图片格式和大小
  • 资源加载 - 按需加载资源

6.3.2 代码优化

  • 代码分割 - 按需加载代码
  • 缓存策略 - 缓存常用数据
  • 事件委托 - 使用事件委托减少事件监听器
  • DOM操作 - 减少DOM操作次数

6.4 用户体验

6.4.1 操作体验

  • 操作反馈 - 提供及时的操作反馈
  • 错误提示 - 友好的错误提示信息
  • 加载状态 - 显示加载状态
  • 操作确认 - 重要操作需要确认

6.4.2 界面设计

  • 简洁明了 - 界面简洁,功能明确
  • 易于使用 - 操作流程简单直观
  • 响应迅速 - 系统响应速度快
  • 视觉舒适 - 色彩搭配合理,视觉效果舒适

7. 故障排查

7.1 安装部署问题

Q: 页面空白,无法显示? A:

  1. 检查Web服务器配置是否正确
  2. 查看浏览器控制台错误信息
  3. 确认所有资源文件路径正确
  4. 检查浏览器兼容性

Q: 图片无法加载? A:

  1. 检查图片路径(相对路径或绝对路径)
  2. 确认图片文件是否存在
  3. 检查Web服务器静态资源配置
  4. 查看浏览器Network面板请求状态

7.2 功能使用问题

Q: 组件无法拖拽? A:

  1. 确认Konva库是否正确加载
  2. 检查画布是否正常初始化
  3. 查看浏览器控制台是否有错误
  4. 尝试刷新页面

Q: 保存失败? A:

  1. 检查API接口地址配置
  2. 确认用户token是否有效
  3. 查看网络请求响应信息
  4. 检查场景JSON数据格式

Q: 数据不更新? A:

  1. 检查WebSocket/MQTT/HTTP连接状态
  2. 确认数据点绑定是否正确
  3. 查看数据更新方法是否被调用
  4. 检查数据格式是否符合预期

Q: 控制台报错 window.SafeJSON.parseFlexible is not a function A:

  1. 确认已加载 assets/js/common/tool.js(其中定义 window.SafeJSON
  2. 版本升级后请清理缓存(Ctrl+F5),避免旧资源未更新

Q: 控制台报错 echarts is not defined(图表组件)? A:

  1. 确认页面已引入 ECharts 脚本(echarts.min.js
  2. 若页面使用 defer 延迟加载脚本,图表初始化可能早于脚本加载;请检查 Network 是否成功加载脚本

7.3 通信连接问题

Q: WebSocket连接失败? A:

  1. 检查WebSocket服务器是否运行
  2. 确认URL配置是否正确(ws://或wss://)
  3. 检查防火墙和网络设置
  4. 查看浏览器控制台WebSocket错误

Q: MQTT连接失败? A:

  1. 确认MQTT.js库是否正确加载
  2. 检查MQTT服务器地址(WebSocket协议)
  3. 验证用户名密码是否正确
  4. 检查客户端ID是否唯一

Q: HTTP请求失败? A:

  1. 检查API地址是否正确
  2. 确认请求头和参数格式
  3. 查看CORS跨域配置
  4. 检查网络连接

7.4 性能问题

Q: 场景加载慢? A:

  1. 优化场景组件数量
  2. 压缩图片资源
  3. 使用图片缓存
  4. 检查网络带宽

Q: 画面卡顿? A:

  1. 减少动画数量
  2. 优化数据更新频率
  3. 使用图层分组
  4. 检查浏览器性能

8. 性能优化

8.1 前端性能优化

8.1.1 加载优化

  • 资源压缩 - 压缩CSS、JavaScript和图片资源
  • 资源合并 - 合并多个CSS和JavaScript文件
  • 懒加载 - 实现图片和组件的懒加载
  • 预加载 - 预加载即将使用的资源
  • CDN加速 - 使用CDN加速静态资源

8.1.2 运行时优化

  • DOM操作优化 - 减少DOM操作,使用虚拟DOM
  • 事件委托 - 使用事件委托减少事件监听器
  • 计算缓存 - 缓存计算结果,避免重复计算
  • Web Worker - 将复杂计算移至Web Worker
  • 防抖节流 - 对频繁事件进行防抖或节流处理

8.1.3 渲染优化

  • 图层管理 - 合理使用Konva.js的图层
  • 减少重绘 - 批量更新DOM,减少重绘
  • 动画优化 - 使用requestAnimationFrame
  • 图片优化 - 使用适当的图片格式和大小
  • 字体优化 - 合理使用字体,避免字体闪烁

8.2 后端性能优化

8.2.1 API优化

  • 缓存策略 - 缓存API响应
  • 批量操作 - 支持批量API操作
  • 分页查询 - 实现分页查询
  • 请求合并 - 合并多个小请求
  • 响应压缩 - 启用Gzip压缩

8.2.2 数据库优化

  • 索引优化 - 合理创建数据库索引
  • 查询优化 - 优化SQL查询
  • 连接池 - 使用数据库连接池
  • 缓存 - 使用Redis等缓存

8.2.3 服务器优化

  • 负载均衡 - 配置负载均衡
  • 水平扩展 - 支持水平扩展
  • 资源监控 - 监控服务器资源使用
  • 性能分析 - 定期进行性能分析

8.3 网络优化

8.3.1 通信优化

  • 协议选择 - 根据场景选择合适的通信协议
  • 连接管理 - 合理管理WebSocket连接
  • 数据压缩 - 压缩传输数据
  • 数据格式 - 使用高效的数据格式
  • 批量传输 - 批量传输数据

8.3.2 网络配置

  • CDN - 使用CDN加速
  • HTTP/2 - 启用HTTP/2
  • HTTPS - 使用HTTPS
  • DNS优化 - 优化DNS解析

9. 安全指南

9.1 前端安全

9.1.1 XSS防护

  • 输入验证 - 对用户输入进行严格验证
  • 输出编码 - 对输出进行HTML编码
  • CSP - 配置内容安全策略
  • DOM净化 - 净化DOM操作

9.1.2 CSRF防护

  • Token验证 - 使用CSRF Token
  • SameSite Cookie - 设置SameSite Cookie
  • Referer检查 - 检查Referer头
  • Origin检查 - 检查Origin头

9.1.3 其他安全措施

  • 密码安全 - 安全存储密码
  • 敏感数据 - 加密存储敏感数据
  • HTTPS - 使用HTTPS
  • 权限控制 - 实现前端权限控制

9.2 后端安全

9.2.1 API安全

  • 认证授权 - 实现完整的认证授权
  • API限速 - 限制API请求频率
  • 参数验证 - 验证API参数
  • 错误处理 - 安全的错误处理

9.2.2 服务器安全

  • 防火墙 - 配置防火墙
  • 更新补丁 - 及时更新系统补丁
  • 访问控制 - 限制服务器访问
  • 日志审计 - 记录安全日志

9.3 部署安全

9.3.1 环境安全

  • 最小权限 - 使用最小权限原则
  • 隔离环境 - 隔离部署环境
  • 备份恢复 - 定期备份数据
  • 监控告警 - 监控安全事件

9.3.2 配置安全

  • 敏感信息 - 安全存储配置信息
  • 环境变量 - 使用环境变量管理配置
  • 配置加密 - 加密敏感配置

附录

A. 快捷键列表

功能快捷键
保存Ctrl + S
预览Ctrl + P
撤销Ctrl + Z
恢复Ctrl + Y
复制Ctrl + C
粘贴Ctrl + V
删除Delete
全选Ctrl + A
放大Ctrl + 滚轮上
缩小Ctrl + 滚轮下
全屏F11

B. 组件属性类型

类型说明示例
input文本输入框文本、数字输入
color颜色选择器颜色选择
select下拉选择框选项选择
slider滑块数值范围选择
hardwareInputNew硬件设备选择数据点绑定
whereStatusColorTable状态颜色表条件颜色配置
valueZoomTableNew数据缩放表数据缩放配置

C. 数据格式参考

场景JSON结构:

{
    "attrs": {
        "width": 1920,
        "height": 1080,
        "backgroundColor": "#ffffff",
        "communicationConfig": {
            "websocket": {
                "enabled": true,
                "url": "ws://localhost:8080/ws",
                "heartbeat": 10,
                "reconnect": "1"
            }
        },
        "dataKeyArray": {
            "a03": "",
            "a04": "",
            "d3a002": ""
        }
    },
    "children": [
        {
            "attrs": {
                "id": "component_001",
                "moduleType": "Text",
                "x": 100,
                "y": 100,
                "width": 200,
                "height": 50
            }
        }
    ]
}

dataKeyArray 说明:

  • 位置stage.attrs.dataKeyArray
  • 类型:Object(key 为数据点编号/devicecode,value 为当前值;初始化为 ""
  • 用途:预览/监控页用于构建 messageContentTemp 并进行数据合并更新

D. 参考资料

E. 版本历史

v1.0.2 (2026)

  • 文档全面优化和更新
  • 新增性能优化章节
  • 新增安全指南章节
  • 扩展适用场景
  • 增强技术栈说明
  • 完善故障排查指南

v1.0.1 (2024)

  • 系统优化和架构升级
  • 实现统一配置中心,集中管理所有配置
  • 实现初始化管理器,优化模块依赖管理
  • 实现动态模块加载,减少初始加载时间
  • 实现异步资源加载,提高首屏加载速度
  • 实现内存泄漏防护,提高系统稳定性
  • 实现安全管理器,增强XSS和CSRF防护
  • 优化配置管理,支持动态加载和热更新
  • 优化错误处理,提供更友好的用户反馈
  • 增强代码文档,提高可维护性

v1.0.0 (2024)

  • 初始版本发布
  • 支持可视化组态编辑
  • 支持实时数据监控
  • 支持WebSocket、MQTT、HTTP通信
  • 支持丰富的组件库

文档维护: 本文档会持续更新,请关注项目更新日志。 👉 演示地址:www.ricon.cloud:81 👉 官网地址:www.ricon.cloud

Ricon组态系统 - 让可视化组态更简单! 🚀