介绍 Automan 可视化开发平台前端和后端的一些实现方式
Automan 是一套基于 Vue.js – Node.js 架构下的,支持多团队的,
集开发与部署为一体的可视化 Web 页面制作平台
有什么特点?
定义一套标准的数据规范,提供一个编辑器去编辑这个数据,
同时提供一个解析器去解析该数据,然后渲染出页面
这是上图中一个 node 的数据格式
{
"id": "main/button1l",
"type": "main/button",
"label": "按钮1l",
"version": "0.1.0",
"visible": true,
"style": {
"position": "absolute",
"width": "100px",
"height": "40px"
},
"animate": [],
"props": {
"text": "输入文字",
"type": "danger",
"click": []
},
"path": "https://domain.com/main/button/0.1.0/index.js",
"script": "",
"events": []
}
组件自有逻辑 mixin 自定义脚本
这是上图中一个 node 的 DOM 结构
一个 node 的逻辑功能=组件逻辑+脚本1+脚本2+脚本3...
核心代码如下
// 通过加载到的组件代码所获得的全局对象来创建 Vue 对象
// window['image_1.0.3'] 是加载组件代码后生成的对象
let component = Vue.extend(window['image_1.0.3'])
// 遍历所有加入的脚本 mixin 到组件对象中
nodeInfo.script.forEach(value => {
component = component.extend(value)
})
// 以节点 id 为组件名,注册最终组件对象
Vue.component(nodeInfo.id, component)
组件如何暴露可编辑的属性
组件默认支持下列属性类型
组件如何支持更多的属性类型?
编辑器的基础是一个 Dock 系统
系统所有部件采用观察者模式通信
渲染器就是一个编辑器的反转
把编辑器生成的数据,反向解析成 DOM
管理后台是一个常规的基于 Element-UI 的项目
比较有意思的是其中的动态路由部分
服务端是基于 Egg.js + MySQL + Redis 开发的一套 RESTful API 接口
实现了 Automan 所有的业务逻辑
服务端主要包含以下内容
谢谢!
参考资料: