# vue-form-design
**Repository Path**: doublecc/vue-form-design
## Basic Information
- **Project Name**: vue-form-design
- **Description**: A visual form designer/generator base on Vue.js, make form development simple and efficient.(基于Vue3的可视化表单设计器,拖拽式操作让你快速构建一个表单, 让表单开发简单而高效。)
- **Primary Language**: JavaScript
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 4
- **Created**: 2024-10-18
- **Last Updated**: 2024-10-18
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# vue-form-design
Starfish 可视化动态表单平台
- 💪 Vue 3.0 Composition API
- 🔥 Written in TypeScript
# 在线体验
https://haixin-fang.github.io/vue-form-design/playground/index.html
## 图片
[](https://imgtu.com/i/vlt3PU)
## 简介
可以简称`starfish设计器`,是一个功能强大、开箱即用的拖拽式低代码设计器。它基于 Vue3 开发,可以让开发者根据自己的需求自由扩展和定制组件。此外,vue-form-design 使用 JSON 配置来生成页面,可帮助开发者快速生成页面,提高开发效率。它提供了两个重要组件:`starfish-editor` 设计器和 `starfish-form` 生成器。
#### 功能
- [x] 拖拽设计
- [x] 自定义 actionBar
- [x] 布局组件扩展
- [x] 自定义组件扩展
- [x] 事件扩展
- [x] 完善布局
- [x] 组件属性自定义
- [x] 动态校验 ([开源表单设计器 vue-form-design 动态表单校验实现原理](https://juejin.cn/post/7343161506698592266))
- [x] 表单显示条件
- [x] 支持快捷键设计表单
## 技术栈
- Vue3
- typescript
- Vite
- element-plus
- codemirror
## 代码规范
- husky
操作 git 钩子的工具
- lint-staged
本地暂存代码检查工具
- commitlint
commit 信息校验工具
- commitizen
辅助 commit 信息 ,就像这样,通过选择输入,规范提交信息
## 环境准备
node.js >= 16
先安装 pnpm
```bash
$ npm install -g pnpm
```
然后安装依赖
```bash
$ pnpm bootstrap
```
## 运行项目
执行命令
```bash
$ pnpm pg
```
最后在浏览器中打开
http://localhost:1100/vue-form-design/playground/#/
即可得到一个动态表单项目
## 架构
使用 monorepo 架构
该项目分为多个代码包,有
starfish-form,表单组件
starfish-editor,编辑页面
### 提交规范
- `feat` 增加新功能
- `fix` 修复问题/BUG
- `style` 代码风格相关无影响运行结果的
- `perf` 优化/性能提升
- `refactor` 重构
- `revert` 撤销修改
- `test` 测试相关
- `docs` 文档/注释
- `build` 对构建系统或者外部依赖项进行了修改
- `chore` 依赖更新/脚手架配置修改等
- `workflow` 工作流改进
- `ci` 持续集成
- `types` 类型定义文件更改
- `wip` 开发中
# 可用库
- nanoid 一个小巧、安全、URL 友好、唯一的 JavaScript 字符串 ID 生成器。
## 核心组件介绍
#### starfish-editor 设计器
`starfish-editor` 是一个可视化设计器组件,用户可以通过拖拽组件的方式快速生成 JSON 配置。它提供了丰富的组件库和配置项,用户可以根据需要选择合适的组件并配置相应的属性、事件和动作。设计器还提供了实时预览功能,用户可以随时查看所设计页面的效果。最终,用户可以将 JSON 配置导出,用于页面的生成和修改。
#### starfish-form 生成器
`e-builder` 是一个页面构建组件,它可以将设计器生成的 JSON 配置构建成页面,完成组件的渲染、事件绑定和数据回显等操作。
## 项目中引用表单编辑器
先安装包
```js
npm i starfish-editor -S
```
注册包
```js
import { createApp } from "vue";
import App from "./App.vue";
import StarfishEditor from "starfish-editor";
import "starfish-editor/src/styles/index.scss";
const app = createApp(App);
app.use(StarfishEditor);
app.mount("#app");
```
使用编辑器吗,对应字段参考下方
```js
```
生成器使用
```js
import { Dynamicform } from "starfish-form";
app.component(Dynamicform.name, Dynamicform);
```
动态表单组件使用
`formResult`可以为空,list 是通过编辑器生成的结果,搭配使用
```js
```
## 简要文档说明
- 需要的基础组件
:basic-fields="['Text', 'textarea']"
- 需要的布局组件
:layout-fields="['grid']"
- 是否禁用快捷键
shortcut-disabled=true
- 保存回调
@save
- 获取 json
getJson
- 设置 json
setJson
- navlist 每个按钮可配,并且是否可隐藏
- header 头是否展示
header-show 默认 true
- 菜单按钮自定义
actionbar: {
left: ['delete', 'undo', 'redo', 'tree', 'save', 'preview', 'fullscreen'],
right: ['viewport', 'json-export', 'json-import'],
column: true
},
1、布局控件建议增加表格控件,可以配出类似 word 表单
2、建议增加打印
3、建议增加 PC、PAD、H5 的预览功能
4、建议增加自定义样式配置
## `Star`
非常感谢留下星星的好心人,感谢您的支持 :heart:
[](https://github.com/haixin-fang/vue-form-design/stargazers)
## `Fork`
瞧,那些 `小哥哥` 、`小姐姐` 认真 `学习` 的样子真滴是 `哎呦不错哦` :heart:
[](https://github.com/haixin-fang/vue-form-design/network/members)