2022-04-24 表单设计器动态插入脚本【低代码平台】

需求背景

目前低代码平台中的表单设计器很方便的帮助我们快速开发出表单,但是衍生项目里某些表单有很多特殊需求,不得不在核心文件parser里进行编辑(按特殊情况处理),使文件很乱。所以需要在构建表单时,可以手动在配置页面输入特殊处理代码,动态插入到generator的某处。这样就实现了个别表单的特殊需求。

实现过程:

  1. 获取字符串,并作为js脚本运行
  2. 在js脚本获取设计器表单中某个控件的值
  3. 添加变更事件(js脚本运行在文件何处)
  4. 通过js脚本改变某个控件的值(比如实现控件值的联动)
  5. 引入在线编辑器插件(markdown:mavon-editor 代码编辑器(高亮): vue-codemirror-lite

解决思路

  1. 几种将字符串当做js脚本运行的方法,主要有定时器和eval,考虑到this指向问题,抛弃安全性和性能问题,这里用的eval。
  2. 在把eval放在合适的位置执行,和平时的代码写法一样,通过this和控件的字段名直接取到值。(或通过ref取到控件的虚拟dom也行)
  3. 因为是简单的dome,只需要在特定的某个按钮点击前后或控件值改变后做特殊处理,这里用select选择框列举了几个事件位置供开发人员使用。(如果想整篇插入新vue文件,比如生成新的控件之类的,可以使用jsx动态插入,或者动态引入vue组件
  4. 在子控件输入值的时候,设计器是统一通过parser父组件改变vuex数据实现的,考虑到值的来源唯一性。在实际使用时候写脚本时,我们需要监听控件的值的改变,在脚本里触发emit,依旧通过parser改变相应控件的值。
// 对102做必填校验
if(!this[this.formConf.formModel].field102){
  this.msgError('您没有填写')
  flag = false
}
// js脚本:通过104和105联动103
this.$set(
  this[this.formConf.formModel],
  'field103',
  this[this.formConf.formModel].field104 + '-' + this[this.formConf.formModel].field105
)
this.$set(
  this.formInfo,
  'field103',
  {
    type: 'wf-input',
    value: this[this.formConf.formModel].field104 + '-' + this[this.formConf.formModel].field105
  }
)
this.$store.commit('SET_EVENT', { type: 'blur', id: 'field103', tag: 'wf-input', value: this[this.formConf.formModel].field104 + '-' + this[this.formConf.formModel].field105 })
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可视化代码设计是一种基于 vue3 的工具,用于简化设计和开发流程。在该设计中,用户可以通过拖拽和放置组件的方式来创建,而无需编写繁琐的代码。它提供了丰富的组件库,涵盖了常见的元素,如输入框、下拉框、日期选择等,以及更复杂的组合组件,如格和多选框等。 支持 vue3 的可视化代码设计具有以下几个优点。 首先,它可以极大地提高开发效率。开发人员不再需要从零开始编写代码,而是可以直接在设计中进行可视化的操作。这大大减少了开发的工作量,提高了开发效率。 其次,它提供了简易用的拖拽操作,使得元素的布局和排列非常灵活。用户可以根据实际需求自由地拖拽和放置组件,轻松实现复杂的布局。 此外,设计师可以根据自己的需求进行样式的调整和定制。设计提供了丰富的样式设置选项,用户可以自由选择颜色、字体、边框等样式,以及添加自定义的 CSS 类名。 最后,支持 vue3 的可视化代码设计还具有良好的兼容性和扩展性。它完全基于 vue3 开发,与 vue3 的生态系统完美结合,可以无缝地与其他 vue3 组件和插件进行集成。同时,它还提供了丰富的 API 接口,方便开发人员进行二次开发和定制。 综上所述,支持 vue3 的可视化代码设计是一款功能强大、易于使用的工具,可以极大地简化开发流程,提高开发效率,并且具备良好的兼容性和扩展性。它将为开发者提供更轻松、高效的设计和开发体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值