vue-easy-form: json配置型的动态表单

5,908 阅读3分钟

vue-easy-from: 简称为esForm,是一个独立、不依赖第三方类库的vue表单组件;可通过一份json配置动态输出用户所需要的表单。

痛点

作为前端工程师,开发表单是家常便饭,是前端工程师的必修课之一。虽然vue这种数据驱动的开发框架给我们带来极大的方便,但是每次开发表单时都要重新编写差不多一样的html、js、css,这是极度重复无趣、没营养、费时费力的事件。

vue资源(vue-awesome)表单类库的现状

笔者前期在开发vue表单时,也曾经直接应用过vue资源的表单类库,虽是json配置,但在使用的过程中,也发现了不少问题。

  • 基本上都是静态配置,无任何界面逻辑可言,(比如:A组件隐藏,B组件也需要隐藏等);
  • 类库运行依赖于类库本身定制化的组件,无法直接使用第三方组件;若想使用第三方组件,必须对第三方组件按当前的类库的组件规则进行封装,这样的组件只会是一次性使用,也无法在其它项目中重复利用,费时费力,极大增加用户的开发成本;
  • 自定义组件需要全局声明,开发耦合度高,维护困难;
  • 组件定制化,功能缺失,难以理解。

为什么选择esForm?

  • 写法简单,只需要一个json配置,几乎无需html, css;
  • 布局丰富,支持弹性布局和tabs布局;
  • 无缝对接第三方组件,无需为框架定制化组件(可自由选择element-uifish-ui、也可自定义vue组件),不增加用户的额外负担;
  • 表单功能齐全,包含标题、验证、事件、单位、帮助、描述、数组等,这些可以直接配置,也可以自定义,无限制;
  • 逻辑控制灵活方便(支持es写法函数写法),用户可以任意操作;
  • 组件引用即插即用,无需要全局声明,耦合度超低。

如何使用esForm

安装与引入

// 安装
npm install --save vue-easy-form

import esForm from "vue-easy-form"; // 引入
Vue.use(esForm);    // 插件安装

实例

在插件安装时已经注册一个"es-form"的表单组件,使用时只需要配置一个schema即可

<es-form :schema="formSchema" v-model="formValue"></es-form>

配置

formSchema中,每一项(如:"name")通常只需要配置3个属性,甚至可直接配置一个label(如:"author"),简单方便。

data() {
    return {
      formValue: {
        // 自动同步表单的值
      },
      formSchema: {
        name: {
          label: "广告名称",        // label
          component: "el-input",    // 表单组件
          value: "首页位置"         // 初始值
        },
        author: "作者"  // 简写:相当于配置了label,其它的使用默认值
      }
    };
  }

表单效果

直接对接第三方组件,无需为框架定制化组件

具体的使用方法可查看官方的开发文档和实例:
开发文档:chengaohe45.github.io/vue-easy-fo…
github:github.com/chengaohe45…