好久不写博客了,手都生了,趁着最近老大让我研究动态表单生成的时机,撸一发博客~~

开源项目比较

老大丢给我了两个比较不错的开源的动态表单生成工具,这两个项目在github上的star数量基本持平:

https://form.io/#/

https://github.com/udos86/ng-dynamic-forms

form.io

其中from.io本身是一个商业项目,只是开源了其中动态表单生成的部分。他的功能有点强大,从官方简介的视频来看看,支持拖拽、验证、设置各种默认值等等,商业版本甚至可以支持数据的动态存储。想要研究它,需要了解三个开源项目:

https://github.com/formio/formio.git

https://github.com/formio/formio.js.git

https://github.com/formio/angular-formio.git

其中formio这个项目里面是一些边缘化的东西,我没有深究,formio.js这个项目是整个项目的核心,他里面有各种组件的封装,各种拖拽效果等等,剩下一个angular-formio其实就是给formio.js包了一层angular的皮。

优势:

form.io非常的强大,你能想到的东西基本上都有,甚至都考虑到了授权~~

劣势:

  1. 凡是强大的东西,都有一个共性,就是重,form.io是非常重的,想要把他吃透可不是一个简单的事情
  2. form.io基本上都是围绕bootstrap作为核心来生成表单的(各种样式之类的定义在formio项目中),不过应该是可以自己修改定义的
  3. 组件只有HTML的组件(或者说是bootstrap的组件),扩展起来并没有那么容易
  4. 基于javascript开发而不是typescript,这个算劣势吗?

ng-dynamic-forms

这个项目是原生就基于angular2开发的一个项目,支持原生HTML、bootstrap、foundation、ionic、kendo for angualr、material、primeng等Angular的UI框架,并支持数据验证。

优势:

  1. 这个组件相较于form.io,量级比较轻,源码也比较容易读懂,如果是想自己定制一些东西的话,会比较容易
  2. 对于第三方UI库支持比较好,方便与项目中的其他控件统一

劣势:

  1. 功能没有form.io强大,不过基本够用
  2. 组件较少,不过常用的基本都有,够用
  3. 布局和控件是分开的,用起来略有繁琐
  4. 对于第三方控件库的依赖比较强

Angular动态表单生成(一)的更多相关文章

  1. Angular动态表单生成(八)

    动态表单生成之拖拽生成表单(下) 我们的动态表单,最终要实现的效果与Form.io的在线生成表单的效果类似,可以参考它的demo地址:https://codepen.io/travist/full/x ...

  2. Angular动态表单生成(七)

    动态表单生成之拖拽生成表单(上) 这个功能就比较吊炸天了,之前的六篇,都是ng-dynamic-forms自带的功能,可能很多的说明官方的文档都已经写了,我只是个搬运工,而在这篇文章中,我将化身一个工 ...

  3. Angular动态表单生成(五)

    动态表单生成之布局 到上面的篇章为止,我们已经把表单比较完整的生成出来了,也实现了一些验证功能,可以说,我们截止这里,就已经可以满足我们的大部分表单生成需求了~ 但是: 目前来说,我们对于表单的布局只 ...

  4. Angular动态表单生成(六)

    动态表单之根据Json生成表单 我们在实际的使用中,动态表单往往是由服务器端的一系列配置,然后返回数据给客户端,最后客户端根据数据来动态的生成表单.那么怎么像我们上面所描述的这样,生成一个可以让我们的 ...

  5. Angular动态表单生成(二)

    ng-dynamic-forms源码分析 在两个开源项目中,ng-dynamic-forms的源码相较于form.io,比较简单,所以我还勉强能看懂,下面就我自己的理解进行简单分析,若有不对的地方,请 ...

  6. Angular动态表单生成(三)

    ng-dynamic-forms实践篇(上) 定个小目标 先来定个小目标吧,我们要实现的效果: 动态生成一个表单,里面的字段如下: 字段名称 字段类型 验证 备注 姓名 text 必填,长度小于15 ...

  7. Angular动态表单生成(四)

    ng-dynamic-forms实践篇(下) 我们接着上篇,先把小目标中的所有字段都定义出来 这部分就是苦力活儿了,把KendoUiComponent中的formModel完善即可: formMode ...

  8. form-create 3.0 版本发布,好用的Vue3版本动态表单生成组件

    form-create 是一个可以通过 JSON 生成具有动态渲染.数据收集.验证和提交功能的表单生成组件.支持2个UI框架,并且支持生成任何 Vue 组件.内置20种常用表单组件和自定义组件,再复杂 ...

  9. Vue+Element的动态表单,动态表格(后端发送配置,前端动态生成)

    Vue+Element的动态表单,动态表格(后端发送配置,前端动态生成) 动态表单生成 ElementUI官网引导 Element表单生成 Element动态增减表单,在线代码 关键配置 templa ...

随机推荐

  1. Bzoj2780: [Spoj]8093 Sevenk Love Oimaster

    题目 传送门 Sol 就是广义\(sam\) 然后记录下每个状态属于哪些串,开\(set\)维护 \(parent\)树上启发式合并一下就好了 # include <bits/stdc++.h& ...

  2. html-路径的介绍

    一.绝对路径 绝对路径是指文件在硬盘上真正存在的路径 - D:\Java\JavaWeb\day01\a.jpg - http://www.baidu.com/b.jpg 二.相对路径 一个文件相对于 ...

  3. php中怎么理解Closure的bind和bindTo

    bind是bindTo的静态版本,因此只说bind吧.(还不是太了解为什么要弄出两个版本) 官方文档: 复制一个闭包,绑定指定的$this对象和类作用域. 其实后半句表述很不清楚. 我的理解: 把一个 ...

  4. 【python爬虫】 之 爬取百度首页

    刚开始学习爬虫,照着教程手打了一遍,还是蛮有成就感的.使用版本:python2.7 注意:python2的默认编码是ASCII编码而python3默认编码是utf-8 import urllib2 u ...

  5. IhyerDB modBus采集器配置.

    近期查了一下ihyerDB-modbus采集器的相关配置,由于没有相关的modbus设备,于是今天上午根据网上的线索下载了Modbus Slave(modbus从站仿真器).笔记本也没有串口,于是下载 ...

  6. 在 O(1) 时间删除链表结点(C 和 Python 实现)

    (说明:本博客中的题目.题目详细说明及参考代码均摘自 “何海涛<剑指Offer:名企面试官精讲典型编程题>2012年”) 题目 给定单向链表的头指针和一个结点指针,定义一个函数在 O(1) ...

  7. C#--动态加载DLL,通过反射调用参数,方法,窗体

    一些文章: 反射插件插件 http://bbs.csdn.net/topics/391950257?page=1 反射窗体 http://www.sufeinet.com/thread-2984-1- ...

  8. Facebook POP 使用指南

    Facebook POP 使用指南 Pop是一个动画引擎,用以扩展iOS.OSX的动画类型.相较于iOS.OSX中的基本动画效果,Pop扩展后支持弹簧动画效果与衰减动画效果,你可以用Pop动画引擎来构 ...

  9. 5 hbase-shell + hbase的java api

    本博文的主要内容有 .HBase的单机模式(1节点)安装 .HBase的单机模式(1节点)的启动 .HBase的伪分布模式(1节点)安装  .HBase的伪分布模式(1节点)的启动    .HBase ...

  10. redis下的adlist

    //adlist.h #ifndef __ADLIST__H__ #define __ADLIST__H__ typedef struct listNode_ { struct listNode_ * ...