Automan 可视化开发平台

介绍 Automan 可视化开发平台前端和后端的一些实现方式

Hex 为您分享 / Github: @hex-ci

目录


  • 简介
  • 整体架构
  • 编辑器
  • 渲染器
  • 管理后台
  • 服务端

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)
            

组件结构

组件如何暴露可编辑的属性

组件结构

组件默认支持下列属性类型

  1. input: 单行输入框
  2. text: 多行输入框
  3. enum: 列表单选
  4. image: 图片选择
  5. audio: 音频选择
  6. video: 视频选择
  7. richtext: 富文本
  8. number: 数字
  9. function: 方法设置
  10. data: JSON数据
  11. date: 时间选择
  12. checkbox: 多选框
  13. radio: 单选框

组件结构

组件如何支持更多的属性类型?

编辑器

编辑器的基础是一个 Dock 系统
系统所有部件采用观察者模式通信

组件的拖动与缩放

渲染器

渲染器就是一个编辑器的反转
把编辑器生成的数据,反向解析成 DOM

管理后台

管理后台是一个常规的基于 Element-UI 的项目
比较有意思的是其中的动态路由部分

服务端

服务端是基于 Egg.js + MySQL + Redis 开发的一套 RESTful API 接口
实现了 Automan 所有的业务逻辑

服务端

服务端主要包含以下内容

  1. 身份验证
  2. 组件管理
  3. 分组管理
  4. 项目管理
  5. 页面管理
  6. 模板管理
  7. 资源管理
  8. 标签管理
  9. 用户管理

THE END

谢谢!







参考资料:

  1. Gods-Pen 文档
  2. Egg.js 文档