【2025最新版】零成本玩转IoT可视化开发:thingsboard-ui-vue3从安装到规则链实战全指南
2026-02-04 05:05:23作者:薛曦旖Francesca
为什么选择thingsboard-ui-vue3?
你是否还在为IoT平台UI开发烦恼?作为ThingsBoard官方前端的Vue3重构版本,thingsboard-ui-vue3基于Vue 3.5.13、TypeScript 5.8.2和Vite 6.2.6构建,整合了Ant Design Vue 4.2.6和AntV X6可视化引擎,完美适配ThingsBoard 4.1.0版本。相比传统前端方案,它提供:
- 开箱即用的IoT组件库:28+专用组件覆盖设备管理、数据可视化、规则引擎等核心场景
- 可视化规则链编辑器:基于AntV X6实现拖拽式规则节点配置,支持复杂业务逻辑编排
- 企业级权限控制:内置RBAC权限模型,适配多租户系统架构
- 无缝集成能力:已完成TDengine时序数据库适配,支持千万级设备数据存储
环境准备与安装
系统要求
| 环境依赖 | 最低版本 | 推荐版本 |
|---|---|---|
| Node.js | 18.x | 20.17.0+ |
| pnpm | 7.x | 10.7.1+ |
| Git | 2.30.0 | 2.45.0+ |
| 浏览器 | Chrome 90+ | Chrome 128.0+ |
快速安装步骤
# 1. 克隆仓库(国内加速地址)
git clone https://gitcode.com/oliver225/thingsboard-ui-vue3.git
cd thingsboard-ui-vue3
# 2. 安装依赖(推荐使用pnpm)
pnpm install
# 3. 配置后端接口(开发环境)
# 修改.env.development文件
# VITE_PROXY = [["/api","http://127.0.0.1:8080/api",false]]
# 4. 启动开发服务器
pnpm dev
⚠️ 注意:项目使用pnpm workspace管理依赖,npm/yarn用户需先执行
npm install -g pnpm
构建部署选项
# 标准生产构建
pnpm build
# Tomcat容器部署
pnpm build:tomcat
# 构建并预览
pnpm build:preview
构建产物默认输出至dist目录,支持Nginx、Tomcat等主流Web服务器部署。Tomcat模式构建会自动适配Java Web应用目录结构。
核心功能实战
1. 项目架构概览
mindmap
root((thingsboard-ui-vue3))
核心框架
Vue 3.5.13
Vite 6.2.6
TypeScript 5.8.2
UI组件
Ant Design Vue 4.2.6
Vue-Vben-Admin
28+业务组件
可视化引擎
AntV X6 2.18.1
ECharts 5.6.0
SVG.js
数据处理
Axios 1.8.4
TDengine适配
WebSocket客户端
2. 规则链编辑器实战
规则链(Rule Chain)是ThingsBoard的核心功能,用于处理设备数据流转和业务逻辑编排。thingsboard-ui-vue3提供了可视化编辑器,支持节点拖拽、连接配置和条件判断。
基础操作流程
flowchart TD
A[创建规则链] --> B[添加处理节点]
B --> C[配置节点属性]
C --> D[连接节点关系]
D --> E[设置触发条件]
E --> F[保存并部署]
关键代码实现
<template>
<div class="rule-chain-edit">
<div class="edit-stencil" id="stencil"></div>
<div class="edit-container" id="container"></div>
<Space class="fixed bottom-8 right-8">
<Button @click="handleSave">保存规则链</Button>
<Button @click="handleResetDebug">重置调试模式</Button>
</Space>
</div>
</template>
<script setup lang="ts">
import { Graph } from '@antv/x6';
import { Stencil, Snapline, Selection, History } from '@antv/x6-plugin';
import RuleChainNode from './node.vue';
// 注册自定义节点
register({
shape: 'rule-chain-node',
width: 200,
height: 50,
ports: {
groups: {
out: { position: 'right', attrs: { circle: { magnet: true, r: 5 } } },
in: { position: 'left', attrs: { circle: { magnet: true, r: 5 } } },
}
},
component: RuleChainNode,
})
// 初始化画布
const graph = new Graph({
container: document.getElementById('container'),
background: { color: '#F2F7FA' },
grid: { visible: true, type: 'doubleMesh' },
connecting: {
snap: true,
allowMulti: false,
validateEdge: validateEdge,
}
})
// 添加插件
graph.use(new Snapline())
graph.use(new Selection())
graph.use(new History())
// 保存规则链
async function handleSave() {
const cells = graph.toJSON().cells;
// 处理节点和连接数据
const nodes = cells.filter(cell => cell.shape === 'rule-chain-node');
const connections = cells.filter(cell => cell.shape === 'rule-edge');
await saveRuleChainMetaData({ nodes, connections });
}
</script>
核心节点类型
| 节点类型 | 用途 | 典型应用场景 |
|---|---|---|
| 过滤节点 | 数据筛选 | 温度异常检测 |
| 转换节点 | 格式转换 | JSON到Protobuf |
| 动作节点 | 业务操作 | 发送邮件通知 |
| 外部节点 | 系统集成 | 调用第三方API |
| 流程节点 | 逻辑控制 | 分支/聚合流程 |
3. 设备管理模块开发
设备管理是IoT平台的基础功能,thingsboard-ui-vue3提供了完整的设备CRUD、状态监控和数据可视化组件。
设备列表组件示例
<script setup lang="ts">
import { ref, onMounted } from 'vue';
import { useTable } from '/@/components/Table';
import { getDeviceList } from '/@/api/tb/device';
const { tableData, loading, fetchTableData } = useTable({
api: getDeviceList,
columns: [
{ title: '设备名称', dataIndex: 'name' },
{ title: '设备类型', dataIndex: 'type' },
{ title: '在线状态', dataIndex: 'status',
customRender: ({ record }) => (
<Tag color={record.status === 'online' ? 'green' : 'red'}>
{record.status}
</Tag>
)
},
{ title: '最后活动时间', dataIndex: 'lastActivityTime' },
]
});
onMounted(() => {
fetchTableData();
});
</script>
高级配置与优化
后端接口代理配置
在vite.config.ts中已预设代理配置,支持多环境切换:
// vite.config.ts
server: {
proxy: {
'/api': {
target: 'http://127.0.0.1:8080',
changeOrigin: true,
rewrite: (path) => path.replace(/^\/api/, '/api'),
},
},
}
性能优化策略
- 组件懒加载:使用
createAsyncComponent实现路由级懒加载
import { createAsyncComponent } from '/@/utils/factory/createAsyncComponent';
const DeviceDetail = createAsyncComponent(() => import('/@/views/tb/device/detail.vue'));
-
大型图表优化:采用虚拟滚动和数据分片加载
-
缓存策略:使用Pinia状态管理和localStorage两级缓存
常见问题解决方案
跨域问题处理
// src/utils/http/axios/index.ts
const { VITE_PROXY } = import.meta.env;
if (VITE_PROXY) {
// 开发环境走代理
config.baseURL = '/api';
} else {
// 生产环境直接对接后端
config.baseURL = VITE_GLOB_API_URL;
}
规则链编辑器空白问题
- 检查AntV X6依赖是否完整安装
- 确认容器元素存在且尺寸正确
- 清除浏览器缓存或使用无痕模式尝试
设备数据接收延迟
- 检查WebSocket连接状态:
store/modules/websocket.ts - 优化时序数据库查询性能
- 调整前端数据采样频率
学习资源与社区支持
官方资源
- 项目仓库:https://gitcode.com/oliver225/thingsboard-ui-vue3
- 在线演示:http://thingsboard.yantsing.com/(测试账号:1069035666@qq.com,密码:17621315188)
- 文档中心:内置
docs目录包含API文档和组件示例
进阶学习路径
- 基础阶段:熟悉Vue3组合式API和TypeScript类型系统
- 组件开发:参考
src/components/RuleChain实现自定义节点 - 架构设计:研究权限系统实现
src/directives/permission.ts - 性能优化:分析
src/hooks/web/useECharts.ts中的图表优化策略
结语与后续规划
thingsboard-ui-vue3作为开源项目,目前已完成核心功能开发,后续将重点推进:
- Web组态功能完善
- 大屏可视化编辑器
- Uniapp小程序适配
- ThingsBoard 4.2+版本支持
如果你在使用过程中遇到问题或有功能建议,欢迎提交Issue或PR参与项目共建。别忘了给项目点赞收藏,关注最新更新!
本文档基于thingsboard-ui-vue3 v4.1.0版本编写,随着项目迭代可能存在差异,请以最新代码为准。
登录后查看全文
热门项目推荐
相关项目推荐
Kimi-K2.5Kimi K2.5 是一款开源的原生多模态智能体模型,它在 Kimi-K2-Base 的基础上,通过对约 15 万亿混合视觉和文本 tokens 进行持续预训练构建而成。该模型将视觉与语言理解、高级智能体能力、即时模式与思考模式,以及对话式与智能体范式无缝融合。Python00
GLM-4.7-FlashGLM-4.7-Flash 是一款 30B-A3B MoE 模型。作为 30B 级别中的佼佼者,GLM-4.7-Flash 为追求性能与效率平衡的轻量化部署提供了全新选择。Jinja00
VLOOKVLOOK™ 是优雅好用的 Typora/Markdown 主题包和增强插件。 VLOOK™ is an elegant and practical THEME PACKAGE × ENHANCEMENT PLUGIN for Typora/Markdown.Less00
PaddleOCR-VL-1.5PaddleOCR-VL-1.5 是 PaddleOCR-VL 的新一代进阶模型,在 OmniDocBench v1.5 上实现了 94.5% 的全新 state-of-the-art 准确率。 为了严格评估模型在真实物理畸变下的鲁棒性——包括扫描伪影、倾斜、扭曲、屏幕拍摄和光照变化——我们提出了 Real5-OmniDocBench 基准测试集。实验结果表明,该增强模型在新构建的基准测试集上达到了 SOTA 性能。此外,我们通过整合印章识别和文本检测识别(text spotting)任务扩展了模型的能力,同时保持 0.9B 的超紧凑 VLM 规模,具备高效率特性。Python00
KuiklyUI基于KMP技术的高性能、全平台开发框架,具备统一代码库、极致易用性和动态灵活性。 Provide a high-performance, full-platform development framework with unified codebase, ultimate ease of use, and dynamic flexibility. 注意:本仓库为Github仓库镜像,PR或Issue请移步至Github发起,感谢支持!Kotlin07
compass-metrics-modelMetrics model project for the OSS CompassPython00
项目优选
收起
deepin linux kernel
C
27
11
OpenHarmony documentation | OpenHarmony开发者文档
Dockerfile
525
3.72 K
Ascend Extension for PyTorch
Python
329
392
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
878
582
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
336
164
暂无简介
Dart
765
189
Nop Platform 2.0是基于可逆计算理论实现的采用面向语言编程范式的新一代低代码开发平台,包含基于全新原理从零开始研发的GraphQL引擎、ORM引擎、工作流引擎、报表引擎、规则引擎、批处理引引擎等完整设计。nop-entropy是它的后端部分,采用java语言实现,可选择集成Spring框架或者Quarkus框架。中小企业可以免费商用
Java
12
1
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
1.33 K
746
🔥LeetCode solutions in any programming language | 多种编程语言实现 LeetCode、《剑指 Offer(第 2 版)》、《程序员面试金典(第 6 版)》题解
Java
67
20
React Native鸿蒙化仓库
JavaScript
302
350