自制 表单渲染和常用函数的npm工具包
2020/6/16 9:26:29
本文主要是介绍自制 表单渲染和常用函数的npm工具包,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
应项目要求开发一个按Json 渲染表单的小工具,顺便将项目中使用的一些常用函数整理成NPM包,与大家分享,望大家支持,希望各位看官能给与指正
项目结构图
sharewinfo-ui
安装
npm install sharewinfo-ui -S 或者 <script type="text/javascript" src='node_modules/sharewinfo-ui/dist/index.js' /> 复制代码
全局对象 sharewinfo
jsonForm 使用
import { jsonForm } from 'sharewinfo-ui'; const formJson = [ { // 第一列 type: 'col', span: 12, // 宽度 50% class: 'class1', style: 'style111', child: [ { type: 'textbox', name: 'userName', label: { text: '用户名', span: 12, }, waper: { span: 12 }, }, { type: 'checkboxGroup', name: '喜欢的水果', label: { text: ' ', span: 12, }, waper: { span: 12 }, items: [ { value: 'pinguo', text: '苹果' }, { value: 'taozi', text: '桃子' }, { value: 'xiangjiao', text: '香蕉' }, ], }, ], }, { // 第二列 type: 'col', span: 12, // 宽度 50% }, ]; const fieldChange = fieldValue => {}; // 字段值发生改变时 回调 const formInstance = jsonForm.render(document.getElementById('domid'), formJson, fieldChange); // form 表单数据获取 var formData = formInstance.getData(); 复制代码
排版
以上 json 表示 一个 2 列 左右分布的表单,左右各占 50% 的宽度, 其中 col - span 12 / 24 * 100 计算的宽度占比, 按照数组的项数依次版本,每行固定显示 24 个 span,超过 24 换行处理,如果排版上有要求,可以试用空 col 指定宽度来灵活调整
样式
所有控件的样式为原始样式,用户可根据自己的样式表来美化。
Panel 收缩/展开
const formJson = [ { type: 'col', span: 12, class: 'class1', style: 'style111', child: [ { type: 'panels', text: 'Paenl Name', class: 'Class', id: 'panels1', child: [ { type: 'textbox', name: 'username1', label: { text: '用户名', span: 8, }, waper: { span: 16 }, }, { type: 'checkboxGroup', name: 'like', label: { text: '你喜欢的水果', span: 8, }, waper: { span: 16 }, items: [ { value: 'pinguo', text: '苹果' }, { value: 'taozi', text: '桃子' }, { value: 'xiangjiao', text: '香蕉' }, ], }, ], }, { type: 'panels', text: 'Paenl Name111111', class: 'Class11111', id: 'panels1222', child: [ { type: 'textbox', name: 'e-mail', label: { text: '邮箱', span: 8, }, waper: { span: 16 }, }, { type: 'select', name: 'gender', label: { text: '性别', span: 8, }, waper: { span: 16 }, value: 'FM', items: [ { value: 'M', text: '男' }, { value: 'FM', text: '女' }, ], }, { type: 'textbox', name: 'phone', label: { text: '电话', span: 8, }, waper: { span: 16 }, }, { type: 'textbox', name: 'test', label: { text: '测试1', span: 8, }, waper: { span: 16 }, }, { type: 'textbox', name: 'test2', label: { text: '测试2', span: 8, }, waper: { span: 16 }, }, { type: 'textbox', name: 'test3', label: { text: '测试3', span: 8, }, waper: { span: 16 }, }, ], }, ], }, ]; 复制代码
color 组件
我们内置颜色选择器, 可指定 type 为 color 单个颜色选择,或者 colorGroup 颜色组 选择
json 属性 说明
1. 通用属性
- class:样式类名称
- style:样式表
2. type = 'col' 栅格
-
span:宽度定义,总数为 24 ,按照配置的数量计算百分比,
-
child:栅格内部的控件列表
-
通用属性
3. col -> child
- type: 控件类型
- name:控件名称 用于表单取值的 key
- id:控件 ID
- value:初始值
- label:标签 {text, span} text: 标签值, span:标签宽度, 总数 24
- waper:{span, class, style} span:控件宽度 总数 24, 需要和 label - span 配合使用
- items:对于集合控件类型的集合配置{value, text} value: 值, text:显示值
- 通用属性
4. type 取值
col | textBox | textarea(待开发) | password(待开发) | text | select | image(待开发) | hidden(待开发) | file(待开发) | color | colorGroup | checkbox | checkboxGroup | radio(待开发) | radioGroup(待开发)
sharewinfo-utils
安装
npm install sharewinfo-utils -S 或者 <script type="text/javascript" src='node_modules/sharewinfo-utils/dist/index.js' /> 复制代码
全局对象 sharewinfo
data
- 延时 异步操作
delayToDo: (fun: Function, ms: number) => number; - 递归数据 input: [{id:1, pid:0, name:'test1'},{id:2, pid:1, name:'test1'}]
result: [{id:1, pid:0, name:'test1', children:[{id:2, pid:1, name:'test1'}]}]
recursionData: (list: Array, keyName: string, parentKeyName: string, rootValue: string) => Array; - 数组去重
distincetData: (arrat: Array, key: string) => Array; - 度合并对象
distincetData: (arrat: Array, key: string) => Array; - 判断对象全等
shallowEqual: (objA: object, objB: object) => boolean;
time
- 格式化时间 YYYY-MM-dd HH:mm:ss
ormate: (inputDate: any) => string;
file
- 上传文件
UploadFile: (url: string, param: object, cab: Function, errcbk: Function) => void;
url
- 获取 url 参数
getPageQuery: () => object; - 校验 url
isUrl: (url: string) => boolean;
security
- RSA 加密 对应服务端可解密
rsaEncrypt: (input: string, publicKey: string) => string; - RSA 解密
saDecode: (input: string, privateKey: string) => string;
开源地址:github.com/Just-Doing/…
这篇关于自制 表单渲染和常用函数的npm工具包的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23linux 系统宝塔查看网站访问的命令是什么?-icode9专业技术文章分享
- 2024-11-12如何创建可引导的 ESXi USB 安装介质 (macOS, Linux, Windows)
- 2024-11-08linux的 vi编辑器中搜索关键字有哪些常用的命令和技巧?-icode9专业技术文章分享
- 2024-11-08在 Linux 的 vi 或 vim 编辑器中什么命令可以直接跳到文件的结尾?-icode9专业技术文章分享
- 2024-10-22原生鸿蒙操作系统HarmonyOS NEXT(HarmonyOS 5)正式发布
- 2024-10-18操作系统入门教程:新手必看的基本操作指南
- 2024-10-18初学者必看:操作系统入门全攻略
- 2024-10-17操作系统入门教程:轻松掌握操作系统基础知识
- 2024-09-11Linux部署Scrapy学习:入门级指南
- 2024-09-11Linux部署Scrapy:入门级指南