Skip to content

Vue3 低代码编辑器

基于Vue3+TypeScript+Element Plus的低代码页面编辑器,支持组件拖拽、属性配置、实时预览等功能。

项目简介

这是一个基于Vue3和TypeScript开发的低代码页面编辑器,使用Element Plus组件库构建界面,支持多种组件的拖拽、调整大小、属性编辑等操作,可用于快速搭建页面原型或简单页面。

界面布局

编辑器界面分为三个主要区域:

正在加载图表...

ASCII版界面布局:

+------------------------------------------+
|            顶部控制栏                     |
+----------+-----------------+-------------+
|          |                 |             |
|  组件列表  |    画布区域      |  属性设置面板 |
|          |                 |             |
|          |                 |             |
|          |                 |             |
+----------+-----------------+-------------+
  • 左侧组件列表:显示可用的组件,支持拖拽到画布
  • 中间画布区域:主要编辑区域,可以放置和编辑组件
  • 右侧属性设置面板:当选中组件时,显示并编辑组件属性

技术栈

  • Vue 3
  • TypeScript
  • Element Plus
  • vue3-sketch-ruler
  • SCSS

功能特性

  • 组件拖拽:从左侧组件列表拖拽组件到画布
  • 可视化编辑:实时预览组件样式和布局
  • 组件属性配置:在右侧面板配置组件的各项属性
  • 组件选择:点击选中组件进行编辑
  • 组件调整:调整组件位置和大小
  • 组件删除:多种方式删除不需要的组件
    • 选中后按Delete键
    • 在属性面板点击删除按钮
    • 右键菜单选择删除选项
  • 组件复制:右键菜单选择复制选项
  • 画布尺寸调整:调整画布宽高以适应不同设备
  • 编辑/预览模式切换:支持预览模式查看实际效果
  • 本地存储:自动保存编辑内容到本地浏览器存储

项目结构

src/
├── assets/          // 静态资源
├── components/      // 组件
│   ├── config/      // 组件配置
│   │   ├── schemas/ // 各个组件的配置模式
│   │   └── PropertyEditor.vue  // 属性编辑器组件
│   └── editor/      // 编辑器组件
│       ├── ContextMenu.vue     // 右键菜单组件
│       ├── ElButtonComponent.vue  // Element Plus按钮组件
│       ├── ElInputComponent.vue   // Element Plus输入框组件
│       └── ...                    // 其他组件
├── utils/           // 工具函数
│   ├── componentConfig.ts   // 组件配置生成
│   ├── componentResolver.ts // 组件解析器
│   ├── debounce.ts          // 防抖函数
│   └── storage.ts           // 本地存储工具
├── views/           // 视图
│   └── layout/      // 布局视图
│       ├── compMenu.vue     // 左侧组件菜单
│       ├── content.vue      // 中间画布内容区
│       ├── index.vue        // 主布局
│       └── setting.vue      // 右侧设置面板
└── App.vue          // 根组件

流程图

基本使用流程

正在加载图表...

如果无法查看Mermaid图表,以下是简化的ASCII流程图:

加载编辑器 --> 恢复/空白画布 --> 编辑模式
   |
   v
+----------------+
|                |<-----+
|    编辑模式    |      |
+----------------+      |
   |                    |
   v                    |
+----------------+      |
| - 添加组件     |------+
| - 选择组件     |
| - 调整画布     |
| - 切换预览     |
+----------------+
   |
   v
+----------------+
|    预览模式    |
+----------------+
   |
   v
自动保存到本地存储

组件操作流程

正在加载图表...

简化的ASCII组件操作流程:

选择组件 --> 组件被选中
   |
   v
+------------------+
| 操作选项:        |
| - 拖拽移动       |---> 位置更新 ---+
| - 调整大小       |---> 尺寸更新 ---+
| - 编辑属性       |---> 属性更新 ---+--> 保存变更 --> 自动保存
| - 右键菜单       |----------------+    ^
| - Delete键删除   |----------------+    |
+------------------+                     |
                                         |
右键菜单:                                |
+------------------+                     |
| - 复制组件       |---> 创建新组件 -----+
| - 删除组件       |---> 组件被删除 -----+
+------------------+

组件选择数据流转过程

正在加载图表...

ASCII版组件选择数据流程:

用户点击组件 --> 鼠标事件触发 --> 阻止事件冒泡
        |
        v
更新selectedComponent状态 --> 触发select事件 --> 父组件接收事件
        |
        v
右侧面板显示组件属性 --> 显示调整大小的控制点和选中状态边框
        |
        v
用户编辑属性 --> 属性值变更 --> 触发update事件
        |
        v
父组件更新数据 --> 组件重新渲染 --> 自动保存到本地存储

添加新组件数据流过程

正在加载图表...

ASCII版添加新组件数据流程:

用户拖拽组件 --> 拖拽事件开始 --> 设置拖拽数据(组件类型)
        |
        v
拖拽经过画布 --> 拖拽释放在画布 --> 获取放置位置坐标
        |
        v
创建新组件配置 --> 分配唯一ID --> 设置组件层级
        |
        v
触发addComponent事件 --> 父组件添加组件 --> 选中新添加的组件
        |
        v
组件渲染到画布 --> 自动保存到本地存储

使用流程

1. 添加组件

  1. 从左侧组件列表中选择需要的组件
  2. 拖动组件到中间画布区域
  3. 组件会自动添加到画布并处于选中状态

2. 选择与编辑组件

  1. 点击画布中的组件进行选择
  2. 选中后,组件周围会显示蓝色边框和调整大小的控制点
  3. 右侧属性面板会显示当前组件的所有可配置项
  4. 修改右侧面板中的属性,组件会实时更新

3. 调整组件位置与大小

  1. 拖动组件可以改变其位置
  2. 拖动组件四角的控制点可以调整大小
  3. 也可以在右侧面板中输入精确的坐标和尺寸值

4. 组件操作

  1. 删除组件

    • 选中组件后按键盘Delete键
    • 在右侧属性面板点击"删除组件"按钮
    • 右键点击组件,在弹出的菜单中选择"删除组件"
  2. 复制组件

    • 右键点击组件,在弹出的菜单中选择"复制组件"
    • 系统会创建一个相同的组件,并略微偏移位置

右键菜单操作示意图

正在加载图表...

ASCII版右键菜单操作示意图:

+----------------------------+
| 组件 (鼠标右键点击)        |
+----------------------------+
          |
          v
+----------------------------+
| [右键菜单]                 |
| +-----------------------+  |
| | 复制组件              |  |
| +-----------------------+  |
| | 删除组件              |  |
| +-----------------------+  |
+----------------------------+
          |
          v
+----------------------------+
| - 复制: 创建偏移副本       |
| - 删除: 移除组件           |
+----------------------------+

右键菜单操作流程

  1. 选择画布中的组件
  2. 在组件上点击鼠标右键
  3. 从弹出的上下文菜单中选择所需操作:
    • 复制组件: 将创建一个组件副本,位置略微偏移
    • 删除组件: 移除组件后自动保存变更

删除组件时系统会弹出确认对话框,防止误操作。复制组件生成的新组件会具有相同的属性和样式,但位置会有一定的偏移以便于区分和后续编辑。

5. 画布操作

  1. 调整画布尺寸:通过顶部控制栏设置画布的宽度和高度
  2. 切换模式:通过顶部的模式开关在编辑模式和预览模式之间切换
  3. 清空画布:点击顶部的"清空画布"按钮可以移除所有组件

6. 预览与保存

  1. 切换到预览模式查看最终效果
  2. 所有编辑自动保存到浏览器本地存储中
  3. 页面刷新后会自动恢复之前的编辑状态

Demo预览

http://lowcode.fjxylin.cn/

本地开发

安装依赖

bash
npm install

启动开发服务器

bash
npm run dev

构建生产版本

bash
npm run build

Last updated: