低代码平台技术实现
低代码平台的概念、技术路线和可视化编辑器实现方式
问题
低代码平台是什么,如何实现可视化拖拽编辑器?
解答
什么是低代码
低代码开发平台(Low-Code Development Platform,LCDP)是通过少量代码或零代码快速生成应用的平台,属于 APaaS(应用平台即服务)。典型应用包括钉钉协作、飞书审批流程、表单模板等。
低代码概念最早出现于 20 世纪 80 年代的可视化编程研究,2014 年由 Forrester Research 正式提出,2018 年随着 Mendix 被西门子 7 亿美元收购而进入爆发期。
低代码 vs 无代码
无代码:面向业务人员,零开发经验即可通过拖拽搭建应用,适合单点场景,平台应用性高。
低代码:面向开发人员,通过可视化编程和少量代码搭建应用,适合复杂场景,平台灵活性高,市场占有率更大。
技术路线
模型驱动(开发人员):数据与逻辑完全分离,以应用开发平台为核心,通过可视化工具和少量代码快速产出企业系统。左侧组件拖拽到画布,右侧通过语法关联各板块,生成场景化应用。
表单驱动(业务人员):完全去 IDE 化,通过拖拽构建数据表展开业务设计。左侧拖拽表单组件,中间画布排列,右侧编辑属性(标题、宽度、必填等),适合人事、销售等零基础人员使用。
可视化编辑器实现
以表单驱动的拖拽平台为例,实现思路如下:
1. 维护组件数据
使用数组 componentData 存储编辑器中的所有组件:
const componentData = []
2. 拖拽事件处理
为组件添加 draggable 属性,监听关键事件:
// dragstart 事件:拖拽开始时传递组件信息
handleDragStart(e, component) {
e.dataTransfer.setData('component', JSON.stringify(component))
}
// drop 事件:拖拽结束时接收组件信息
handleDrop(e) {
const component = JSON.parse(e.dataTransfer.getData('component'))
componentData.push(component)
}
3. 组件数据结构
{
component: 'v-text',
label: '文本',
propValue: '',
style: {
width: 200,
height: 40,
left: 0,
top: 0
}
}
4. 渲染组件
使用 v-for 遍历 componentData,通过 is 属性动态渲染组件:
<component
v-for="item in componentData"
:key="item.id"
:is="item.component"
:style="item.style"
:propValue="item.propValue"
/>
5. 组件移动
画布设为 position: relative,组件设为 position: absolute,监听三个事件:
// mousedown:记录初始位置
handleMouseDown(e) {
this.startX = e.clientX
this.startY = e.clientY
this.startLeft = this.style.left
this.startTop = this.style.top
}
// mousemove:计算移动距离并更新位置
handleMouseMove(e) {
const moveX = e.clientX - this.startX
const moveY = e.clientY - this.startY
this.style.left = this.startLeft + moveX
this.style.top = this.startTop + moveY
}
// mouseup:结束移动
handleMouseUp() {
// 清理事件监听
}
低代码的未来
根据 Gartner 预测,到 2024 年低代码应用开发将占总应用开发的 65% 以上。但低代码不会取代传统软件开发,而是改变重复低效的业务开发方式,让专业开发人员专注于复杂和独特的软件问题。
目前低代码主要适用于企业软件(架构有规律),对于娱乐、社交等深层交互软件仍无法实现。它特别适合业务变化快、预算有限、开发时间紧迫的场景。
关键点
- 低代码分为模型驱动(开发人员)和表单驱动(业务人员)两条技术路线
- 可视化编辑器核心是维护组件数组,通过 dragstart 和 drop 事件实现拖拽
- 组件渲染使用动态组件(
:is属性),移动通过 mousedown/mousemove/mouseup 事件实现 - 低代码适合企业软件和重复性业务,不会取代传统开发,而是提升特定场景的开发效率
- 预计到 2024 年低代码将占应用开发的 65% 以上
目录