低代码学习之一:前端配置和Schema

1,970 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第2天,点击查看活动详情

概念

低代码平台是一款图形化、拖拉拽方式快速实现应用搭建、支持用少量代码(0代码)扩展实现个性化需求的技术工具平台。

代码仓库地址

这是我写的低代码平台示例源码仓库

github:github.com/iamwhj/mobi…

组成

前端配置是低代码平台的主要组成部分之一,此外还有后端和组件物料等。

前端配置实现

前端配置这块的主要目的就是生成一分活动页面的描述数据,也就是常说的schema, 然后再通过这份schema到目标环境还原活动页面,有点像mvvm框架vdom的意思,先用vdom描述dom信息,再将vdom按照解析器生成 real dom。

本篇主要目的是学习,实现一个简单、拥有核心功能的低代码平台即可,如有不全后续可自行拓展。

主要提供核心思路伪代码,完整代码请前往github仓库。

  1. 拖拽功能

拖拽功能直接使用H5的 draggable 这套API

作用于被拖拽元素:

  • ondragstart,当拖拽元素开始被拖拽时触发
  • ondragdragstartdragover之间触发
  • ondragend,当拖拽完成后触发

作用于目标元素:

  • ondragenter,拖拽元素进入目标元素时触发
  • ondragover,拖拽元素在目标元素上移动时触发
  • ondrap,被拖拽元素在目标元素上松开鼠标时触发

ondragover方法中要执行preventDefault(),否则ondrap不会被触发。

在Vue中,被拖拽元素和目标元素的写法是:

// 被拖拽元素
draggable="true" 
@dragstart="dragStart($event, item)"

// 目标元素
@dragover.prevent 
@drop="componentDrap"
  1. Schema

schema的设计一开始肯定是想不全的,先设计一个能实现当前功能的,后面出现新功能在扩展。

// 整个活动的schema
{ 
components: [], 
detail: { name: '', title: '活动页', date: [], },
mark: 'activity-' + Date.now()
};

// 单个组件的schema
{ 
name, // 组件注册名称
fullName, // 组件的展示名称
mark: name + '-' + Date.now(), 
detail: {}, 
style: {}, 
};

我们拖拽组件配置活动页面的过程,schema的实际操作就是生成组件的schema,然后存入活动schema的components里。

  1. 渲染

动态渲染实际上使用的是Vue里的动态组件的方式

<component :is="name"></component>

只要将组件都全局注册之后,name 里放入对应的组件名称,组件就能渲染。

总结

低代码平台项目体量一般都会比较大,功能点和细节很多,费时和费力,但功能并没有复杂到无法实现,其实只要将核心实现了,其他功能只需要顺着核心去拓展,多半能下手。