Vue 前端可视化活动编辑器__Vue.js
发布于 4 年前 作者 banyungong 5531 次浏览 来自 分享
粉丝福利 : 关注VUE中文社区公众号,回复视频领取粉丝福利

先看效果,为一个可视化活动编辑器。

演示地址: https://form.lljj.me/vue-editor.html#/editor

项目地址: https://github.com/lljj-x/vue-json-schema-form/

基于 JSON Schema 开箱即用的简单活动可视化编辑器。

背景

在做生成一个可视化店铺装修系统的时候,需要解决配置数据表单的通用性,参阅了一些现用的解决方案,最终通过 JSON Schema 来生成对应的表单和校验规则。

参考资料: https://github.com/CntChen/cntchen.github.io/issues/15

JSON Schema 主要运用在如下几点:

  • 基于 JSON Schema 来动态生成数据配置表单和数据校验
  • 结合发布流程同步 JSON Schema 到后端系统做接口数据校验
  • 一个活动版块对应一个 JSON Schema 和一份视图 View组件 即可

实现

首先可视化编辑器需要做到板块的管理,这些板块支持可视化的编辑配置和效果展示,最终相互组装为一个页面。

每个板块我们不可避免的需要一个 View组件 来做展示,因为每个板块都长得不一样。板块配置表单和数据校验都通过 JSON Schema 来实现,然后再通过一个拖动的容器来承载这些板块以及一些其它的数据配置。

如下图:

这样当我们在添加新的板块时,只需要开发一个 View组件 ,和书写一份 JSON Schema 来定义数据即可。

功能介绍

基于Vue,依赖 ElementUi、vuedraggable、 @lljj/vue-json-schema-form

  • 板块支持配置化
  • 支持可添加数,是否可删除,置顶,置底,图标配置
  • 支持拖动或者点击上下移动,复制删除等调整页面布局
  • 支持页面预览模式
  • 支持编辑还原数据和默认板块数据配置
  • 视图组件支持异步加载
  • 不支持嵌套组件

添加新的板块只需要在 config/tools.js 导入新增的板块,并且配置好工具栏即可,如:

import * as componentPackFlashSaleGoodsList from '../viewComponents/FlashSaleGoodsList';

const tools = [
    {
        groupName: '图文类',
        componentList: [{
            // 比如这里添加新增的模块
            title: '秒杀商品', // 板块标题
            maxNum: 3, // 最多可添加次数
            icon: 'el-icon-picture', // 工具栏图标类名
            componentPack: componentPackFlashSaleGoodsList, // 重点是这个当前板块的组件包
            additional: {
                bottomDisplay: true, // 是否置底显示
                topDisplay: true, // 是否置顶显示
                unRemove: true // 是否为不可移除
            }
        }]
    }
]

新增板块文件结构如下:( viewComponents/FlashSaleGoodsList/index.js 这里对应上面工具栏配置导入的组件包文件)

import propsSchema from './schema.json';
import uiSchema from './uiSchema.js';
import errorSchema from './errorSchema.js';

// 这里可以异步导入
const View = () => import('./View.vue');

const NAME = propsSchema.id;
const componentViewName = `${NAME}View`;

export {
    propsSchema, // JSON Schema 定义数据结构和生成表单 vue-json-schema-form 参数    
    componentViewName,  // 视图View组件name,需要自己保持唯一
    View, // 视图View组件
    uiSchema, // uiSchema 辅助增强表单样式 不必须 vue-json-schema-form 参数
    errorSchema, // 辅助增强表单校验错误提示 不必须 vue-json-schema-form 参数
    // customRule, // 自定义的校验规则 vue-json-schema-form 参数 (需要更多的vue-json-schema-form 参数参数可自己添加)
};

导出模块解释如下:

  • propsSchemarequired JSON Schema配置,必须包含一个 id 的属性,并且要保证唯一,在保存和编辑数据时用来标识当前组件。传递给 vue-json-schema-form 生成表单;
  • componentViewNamerequired 板块View组件名,唯一,建议通过 id + View 拼接,只是为了在注册组件时的组件名,其实我也可以帮你生成,但是我没有;
  • Viewrequired required 板块View组件,需要异步导入就 () => import(’./xxx.vue’),View 组件必须包含一个名为 formData 的props接受当前表单数据;
  • uiSchema: 传递给 vue-json-schema-form 生成表单,用于增强生成表单的样式,可选;
  • errorSchema: 传递给 vue-json-schema-form 生成表单,用于增强表单的校验提示信息
  • customRule: 传递给 vue-json-schema-form 生成表单,用于自定义校验表单数据

如果需要更多 vue-json-schema-form 参数可直接在 packages/demo/src/vue-editor/views/editor/Editor.vue 渲染 VueElementForm 组件时添加即可。

  • 新增板块可参见 /packages/demo/src/vue-editor/views/editor/viewComponents 内现有板块
  • 工具栏和默认数据配置在 /packages/demo/src/vue-editor/views/editor/config 文件夹内

整个实现相对比较简单,感兴趣的可以花上两个小时看下源码,欢迎讨论提问。

版权声明:著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 作者: lljj_x 原文链接: https://juejin.im/post/6859237405854171144

回到顶部

天下网SEO珠海至尊标王推荐大连百度seo多少钱宁德网站开发报价固原企业网站改版报价鞍山seo报价济宁高端网站设计中山网站改版公司巢湖seo优化哪家好邯郸关键词排名包年推广哪家好达州如何制作网站公司阳江百搜标王推荐横岗外贸网站设计哪家好茂名如何制作网站公司随州百度seo多少钱开封关键词按天收费泰州seo网站优化公司西宁网站推广公司淄博网站设计哪家好朝阳网站优化排名报价防城港网络广告推广哪家好丹东网站搭建公司吕梁网站优化推广多少钱揭阳百度网站优化漳州网站建设报价咸阳优秀网站设计价格企业网站改版推荐焦作设计公司网站哪家好宁波SEO按效果付费多少钱临汾建设网站公司眉山网站建设多少钱香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

天下网SEO XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化