位置: IT常识 - 正文

基于乐吾乐核心库开发的组态编辑器-前端vue2+element,后端node+koa2+mysql5.7(乐吾实验学校网站)

编辑:rootadmin
基于乐吾乐核心库开发的组态编辑器-前端vue2+element,后端node+koa2+mysql5.7

推荐整理分享基于乐吾乐核心库开发的组态编辑器-前端vue2+element,后端node+koa2+mysql5.7(乐吾实验学校网站),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:乐吾是什么意思,乐吾学校,乐吾乐科技,武汉乐吾乐科技有限责任公司,乐吾实验学校网站,乐吾乐topology,乐吾是什么意思,乐吾乐topology,内容如对您有帮助,希望把文章链接给更多的朋友!

首先我们先了解一下乐吾乐,【乐吾乐 2D 可视化组态软件】是乐吾乐科技完全自主研发、集动态数据显示和事件交互于一体的可视化工具,把复杂、变化、多样、有价值的大数据变成直观易懂、实时显示的可视化交互显示,具有跨平台、实时监控、动态交互、高效、可扩展、支持自动算法等特点,最大程度减少研发和运维的成本,并致力于普通业务人员 0 代码开发实现 web 组态、SCADA 等场景。是拥有为电力能源、水利、物联网、工业互联网、智慧城市、智慧医疗、智慧农业、IT 运维等提供解决方案的可视化平台。

乐吾乐公司开源的是他提供的核心库,但是GitHub上下载的组态编辑器并不是开源的,网上找了一圈也没见有比较好的组态编辑器,加上最近项目有需要有组态编辑器,所以就基于乐吾乐核心库开发了一套组态编辑器,功能都是基础功能,希望能给大家带来参考和便利。后面会贴上GitHub项目地址。

我们先看下效果图,

组态编辑器效果图:

里面有基础的系统组件,有自定义的组件,自定义组件可以自己上传:

可以自定义事件动画:

 

 可以绑定通信,从第三方平台拉取数据绑定 

基于乐吾乐核心库开发的组态编辑器-前端vue2+element,后端node+koa2+mysql5.7(乐吾实验学校网站)

 下面我们看下,基础编辑器的核心代码:

<template> <div class="hello"> <div id="topology"></div> </div></template>

dom部分有一个id为topology的dom元素用来挂载乐吾乐的核心编辑器

引入乐吾乐的核心库:

import {topology as Topology} from "./topoligy";import { deepClone } from "@topology/core";import { registerHighcharts } from "@topology/chart-diagram";import { flowPens } from "@topology/flow-diagram";import { activityDiagram, activityDiagramByCtx,} from "@topology/activity-diagram";import { sequencePens, sequencePensbyCtx } from "@topology/sequence-diagram";import { classPens } from "@topology/class-diagram";import { register as registerEcharts } from "@topology/chart-diagram";

我这里核心库重写了了一些自定义动画,所以是 import  {topology as Topology}  from "./topoligy";

但是我用不到了,这里只是留下一个方式用来重写或者添加核心库的扩展方法,代码如下:

生命周期里面:注册乐吾乐核心的方法,还有图表库

mounted() { ... //打开json this.$eventBus.$on("openJson", (json) => { console.log(json, "===json==="); this.topology.clear(); this.topology.open(json); this.mqttInt() this.topology.lock(0); this.topology.inactive(); }); registerHighcharts(); registerEcharts(); this.topology.register(flowPens()); this.topology.register(activityDiagram()); // 原生canvas绘画的图库,支持逻辑复杂的需求 this.topology.registerCanvasDraw(activityDiagramByCtx()); this.topology.register(sequencePens()); this.topology.registerCanvasDraw(sequencePensbyCtx()); this.topology.register(classPens()); document.getElementsByTagName("canvas")[1].style.left = 0; this.topology.inactive(); },

其中有一个是用来打开已编辑的好,从后台读取回来数据的方法监听 openJson

我们再来看下后台:

有几个表,动画表,通讯信息表,组件表,画布表,资源表,用户表,

后台是基于node+koa2+mysql5.7写的 

const Koa = require('koa')const app = new Koa()const views = require('koa-views')const json = require('koa-json')//const onerror = require('koa-onerror')const bodyparser = require('koa-bodyparser')const logger = require('koa-logger')const index = require('./routes/index')const users = require('./routes/users')const drawing = require('./routes/drawing')const drawingsee = require('./routes/drawingsee')const component = require('./routes/component')const upload = require('./routes/upload')const proxy = require('./routes/proxy')const cors = require('koa2-cors')// error handler//onerror(app)app.use( cors({ origin: function(ctx) { //设置允许来自指定域名请求 // if (ctx.url.indexOf('/uploads')!=-1) { // return '*'; // 允许来自所有域名请求 // } // return 'http://192.168.1.74:8080'; //只允许http://localhost:8080这个域名的请求 return '*'; // 允许来自所有域名请求 }, maxAge: 5, //指定本次预检请求的有效期,单位为秒。 credentials: true, //是否允许发送Cookie allowMethods: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'], //设置所允许的HTTP请求方法 allowHeaders: ['Content-Type', 'Authorization', 'Accept'], //设置服务器支持的所有头信息字段 exposeHeaders: ['WWW-Authenticate', 'Server-Authorization'] //设置获取其他自定义字段 }))// middlewaresapp.use(bodyparser({ enableTypes:['json', 'form', 'text']}))app.use(json())app.use(logger())app.use(require('koa-static')(__dirname + '/public'))app.use(views(__dirname + '/views', { extension: 'pug'}))// loggerapp.use(async (ctx, next) => { const start = new Date() await next() const ms = new Date() - start console.log(`${ctx.method} ${ctx.url} - ${ms}ms`)})// 错误处理const error = require("koa-json-error")app.use(error({ format: err => { return { code: err.status, message: err.message, result: err.stack } }, postFormat: (err, obj) => { const { result, ...rest } = obj return obj //rest。可以判断一下,如果是开发环境,就返回obj;生产环境返回rest }}))app.use(async (ctx, next) => { try { await next() } catch (error) { ctx.throw(error) //此方式可输出状态码。传入error可使错误信息更详细 }})// routesapp.use(index.routes(), index.allowedMethods())app.use(users.routes(), users.allowedMethods())app.use(drawing.routes(), drawing.allowedMethods())app.use(drawingsee.routes(), drawingsee.allowedMethods())app.use(component.routes(), component.allowedMethods())app.use(upload.routes(), upload.allowedMethods())app.use(proxy.routes(), proxy.allowedMethods())// error-handlingapp.on('error', (err, ctx) => { console.error('server error', err, ctx)});module.exports = app

 多说无益,最后贴上GitHub前后端地址,自己下载项目自己跑起来,希望能帮到有需要的人

前端:https://github.com/lingansha/topologyEditor.git

后端:GitHub - lingansha/topologyServes: topology组态工具服务端

本文链接地址:https://www.jiuchutong.com/zhishi/292319.html 转载请保留说明!

上一篇:微前端-qiankun(微前端Qiankun 子应用css后加载问题)

下一篇:格林内尔湖,蒙大拿州冰川国家公园 (© Pung/Shutterstock)(格林湖人)

  • steam交易暂挂怎么取消(steam交易暂挂怎么办)

    steam交易暂挂怎么取消(steam交易暂挂怎么办)

  • 抖音表情包怎么保存(抖音表情包怎么下载到手机相册)

    抖音表情包怎么保存(抖音表情包怎么下载到手机相册)

  • 手机分辨率的单位是什么(手机分辨率是哪个)

    手机分辨率的单位是什么(手机分辨率是哪个)

  • 表格打开是灰色空白(表格打开是灰色怎么调)

    表格打开是灰色空白(表格打开是灰色怎么调)

  • 学小易搜题要钱吗(学小易搜题收费吗)

    学小易搜题要钱吗(学小易搜题收费吗)

  • 腾讯会议可以录音录像吗(腾讯会议可以录音吗)

    腾讯会议可以录音录像吗(腾讯会议可以录音吗)

  • 电脑局部截屏的快捷键是什么(电脑局部截屏的三种方法图片)

    电脑局部截屏的快捷键是什么(电脑局部截屏的三种方法图片)

  • 小米街拍模式怎么有快门声音了(小米街拍模式怎么录像)

    小米街拍模式怎么有快门声音了(小米街拍模式怎么录像)

  • 正在解析主机是什么意思(打开网页时显示正在解析主机)

    正在解析主机是什么意思(打开网页时显示正在解析主机)

  • 保存图片到相册 打开抖音为什么看不了(百度网盘怎么保存图片到相册)

    保存图片到相册 打开抖音为什么看不了(百度网盘怎么保存图片到相册)

  • 苹果8p手机信号时有时无(苹果8p手机信号弱怎么解决)

    苹果8p手机信号时有时无(苹果8p手机信号弱怎么解决)

  • msdos是网络操作系统吗(ms是网络问题吗)

    msdos是网络操作系统吗(ms是网络问题吗)

  • 为什么打开数据连接却上不了网(为什么打开数据网络不能用)

    为什么打开数据连接却上不了网(为什么打开数据网络不能用)

  • 小米平板能升miui11吗(小米平板能升级安卓系统吗)

    小米平板能升miui11吗(小米平板能升级安卓系统吗)

  • 小米路由r1c支持千兆吗(小米路由r1c支持mesh)

    小米路由r1c支持千兆吗(小米路由r1c支持mesh)

  • 华为p20原装数据线多长(华为p20原装数据线芯片是什么颜色的)

    华为p20原装数据线多长(华为p20原装数据线芯片是什么颜色的)

  • 手机如何测试网速(手机如何测试网速多少)

    手机如何测试网速(手机如何测试网速多少)

  • 如何解除微信免密支付(如何解除微信免打扰)

    如何解除微信免密支付(如何解除微信免打扰)

  • 如何筛选出符合条件的数据(如何筛选出符合条件的数据并形成新表格)

    如何筛选出符合条件的数据(如何筛选出符合条件的数据并形成新表格)

  • 微信网页版登录为什么只能使用扫描二维码?(微信网页版登陆提示为了你的账号安全)

    微信网页版登录为什么只能使用扫描二维码?(微信网页版登陆提示为了你的账号安全)

  • Win11中的照片应用程序有哪些新功能?获得新的照片应用程序方法(win11自带照片查看器)

    Win11中的照片应用程序有哪些新功能?获得新的照片应用程序方法(win11自带照片查看器)

  • 【前后端分离系列】 Spring Boot + Vue 实现 EasyPOI 导入导出(前后端分离与不分离)

    【前后端分离系列】 Spring Boot + Vue 实现 EasyPOI 导入导出(前后端分离与不分离)

  • ICASSP 2023论文模型开源|语音分离Mossformer(icse论文)

    ICASSP 2023论文模型开源|语音分离Mossformer(icse论文)

  • 小微企业企业所得税计算公式
  • 注销银行帐户需要什么
  • 消费税退回退税流程
  • 债券的利益
  • 分期付款购买商品的会计分录
  • 股东投入款放入什么科目
  • 有限合伙企业转让投资股权
  • 国地税合并后有多少个税种
  • 电子商务交易成本
  • 单位员工去外地上班
  • 资本公积转增股本什么意思
  • 企业核税需要什么资料
  • 对方已经认证的发票怎么作废
  • 买商品送购物券合法吗
  • 监控设备的维修保养
  • 城市建设维护税和教育费附加怎么算
  • 法律规定临时工工资最迟多久结清
  • 开给客户的发票对方已认证
  • 发票过期未认证可以用吗
  • 零申报的印花税怎么打印
  • 用于职工集体福利的外购货物可以抵进项税额吗
  • 融资租赁房产如何缴纳房产税
  • txt文档乱码怎么办
  • 去除页眉的横线快捷方式
  • 取得专用发票是进项还是销项
  • 当月费用下月付款怎么做账
  • 扣扣斗图在哪里设置
  • 为员工租房租金怎么入账
  • 房屋租赁会同
  • php的数组函数
  • 免费投放资产收益的平台
  • 谷歌网页小恐龙
  • 会计分录由什么要素组成
  • php替换文本指定内容
  • 珠宝行业会计核算内容
  • php合并数组的方法
  • php打包phar
  • PHP Ajax JavaScript Json获取天气信息实现代码
  • 租赁汽车折旧年限怎么算
  • 帝国cms商城源码
  • pythonsorted函数的作用
  • 织梦怎么采集文章
  • html导航链接
  • MySQL5.1忘记root密码的解决办法(亲测)
  • 消费税算不算运费
  • 残疾人保障金的工资总额怎么填
  • 医疗机构销售药品能否加价
  • 财务负责人需要承担什么风险
  • 企业间借款利息收入
  • 视同销售要不要确认收入?
  • 一般纳税人销售旧货
  • 汇款汇给别人了应该怎么办
  • 固定资产清理的含义
  • 有限合伙企业分红原则
  • 发票开错一个字还能报销吗?
  • 包材库存
  • 合作研究开发项目的合同
  • 预付款开了发票
  • 产权转移书据印花税减免政策
  • 税前利息为什么这么高
  • 房地产开发企业土地增值税怎么计算
  • 自己动手在家就可以自己理发视频
  • ubuntu 无线wifi
  • linux中fi
  • openeuler操作系统安装方法
  • mac怎么访问windows
  • unetbootin教程
  • Remind_XP.exe - Remind_XP是什么进程 有什么用
  • linux查看hz
  • caddll丢失
  • win7蓝牙驱动软件
  • bat ftp上传文件
  • 定制家具加盟品牌
  • firefox和谷歌
  • jq判断浏览器
  • 自定义标签的开发的3个步骤?
  • javascript小数四舍五入多种方法实现
  • 深入理解javascript特性.pdf
  • 电子专票操作视频
  • 广东省电子税务局app下载官网
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设