小程序如何写动态标签的实现方法


Posted in Javascript onFebruary 05, 2020

web开发中,尤其使用react开发项目时,我们可以很方便的动态定义标签(jsx)

const props = {
 id: '',
 className: '',
 data-a: ''
}
<button {...props} />

动态配置标签的好处一是所有逻辑在JS端控制,二是使得我们的模板非常规范,方便后续维护更新,碎片模板可以很好的控制,三是我们可以根据使用场景很方便的配置props的属性,这样在html结构输出的时候能够得到比较干净的结构

在小程序的开发中,却不能实现类似的功能,导致我们的动态标签通常非常的冗余,多余的属性全部展示在结构生成后

以button为例,我们知道button在小程序中有非常多的属性

小程序如何写动态标签的实现方法

如上所示,这里只是列举了一部分的属性

动态模板

我们的button动态模板写下来应该是这样的

配置

Page({
 data: {
  option: {
   ...
  }
 }
})
<button
 size="{{option.size || 'default'}}"
 type="{{option.type || 'default'}}"
 plain="{{option.plain || false}}"
 value="{{option.value || '按钮'}}"
 ...
 ...
/>

调试工具的输出结构

<button bindtap='' size='' type='' plain='' disabled=false open-typ='' hover-class='' .... />

可以看到调试工具中输出的结构就会变得非常冗余,降低了开发效率,这种冗余的模板输出搞久了会吐的好吧。

可以使用模板语法区分不同场景的button,我知道会有很多这样的声音,但那不是动态模板。

解决问题

那要如何解决输出结构不冗余呢,说了这么多终于到了重点,其实真的只是一个很小的技巧,我的开发经历告诉我这是有效的,你也可以试试,将默认值统统换成 '',改版后的模板如下

<button
 size="{{option.size || ''}}"
 type="{{option.type || ''}}"
 plain="{{option.plain || ''}}"
 value="{{option.value || '按钮'}}"
 ...
 ...
/>

这时你得到的模板就是一段漂亮的结构

<button value='按钮' />

关注我们的开源小程序

https://github.com/webkixi/aotoo-xquery

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JQuery 获得绝对,相对位置的坐标方法
Feb 09 Javascript
javascript中的关于类型转换的性能优化
Dec 14 Javascript
Jquery 的扩展方法总结
Oct 01 Javascript
html中使用javascript调用本地程序(exe、doc等)实现代码
Apr 26 Javascript
JS小游戏之宇宙战机源码详解
Sep 25 Javascript
Node.js 日志处理模块log4js
Aug 28 Javascript
jQuery轻松实现无缝轮播效果
Mar 22 jQuery
javascript+html5+css3自定义弹出窗口效果
Oct 26 Javascript
node前端模板引擎Jade之标签的基本写法
May 11 Javascript
vue数组对象排序的实现代码
Jun 20 Javascript
深入理解vue-class-component源码阅读
Feb 18 Javascript
Vue项目中使用jsonp抓取跨域数据的方法
Nov 10 Javascript
vue如何实现动态加载脚本
Feb 05 #Javascript
vue实现图片懒加载的方法分析
Feb 05 #Javascript
Vue组件基础用法详解
Feb 05 #Javascript
vue组件传值的实现方式小结【三种方式】
Feb 05 #Javascript
vue路由传参的基本实现方式小结【三种方式】
Feb 05 #Javascript
Vuex的API文档说明详解
Feb 05 #Javascript
如何实现iframe父子传参通信
Feb 05 #Javascript
You might like
怎样在UNIX系统下安装MySQL
2006/10/09 PHP
PHP调用Linux的命令行执行文件压缩命令
2013/01/27 PHP
在wamp集成环境下升级php版本(实现方法)
2013/07/01 PHP
全面解析PHP验证码的实现原理 附php验证码小案例
2016/08/17 PHP
写js时遇到的一些小问题
2010/12/06 Javascript
JQuery通过Ajax提交表单并返回结果
2011/07/31 Javascript
13 个JavaScript 性能提升技巧分享
2012/07/26 Javascript
jquery下checked取值问题的解决方法
2012/08/09 Javascript
javascript抖动元素的小例子
2013/10/28 Javascript
Node.js模拟浏览器文件上传示例
2014/03/26 Javascript
使用GruntJS构建Web程序之构建篇
2014/06/04 Javascript
IE6/IE7中JavaScript json提示缺少标识符、字符串或数字问题处理
2014/12/16 Javascript
vue proxyTable 接口跨域请求调试的示例
2017/09/12 Javascript
vue使用中的内存泄漏【推荐】
2018/07/10 Javascript
微信小程序MUI侧滑导航菜单示例(Popup弹出式,左侧滑动,右侧不动)
2019/01/23 Javascript
详解基于webpack&amp;gettext的前端多语言方案
2019/01/29 Javascript
微信小程序实现下拉框功能
2019/07/16 Javascript
详解微信小程序入门从这里出发(登录注册、开发工具、文件及结构介绍)
2020/07/21 Javascript
[49:54]Ti4 循环赛第三日 LGD vs Titan
2014/07/12 DOTA
python数据分析数据标准化及离散化详解
2018/02/26 Python
python批量创建指定名称的文件夹
2019/03/21 Python
利用python如何在前程无忧高效投递简历
2019/05/07 Python
使用selenium模拟登录解决滑块验证问题的实现
2019/05/10 Python
PyQt5实现QLineEdit添加clicked信号的方法
2019/06/25 Python
Python使用Turtle库绘制一棵西兰花
2019/11/23 Python
Python做图像处理及视频音频文件分离和合成功能
2020/11/24 Python
SmartBuyGlasses英国:购买太阳镜和眼镜
2018/01/29 全球购物
阿玛瑞酒店中文官方网站:Amari.com
2018/02/13 全球购物
Electrolux伊莱克斯巴西商店:家用电器、小家电和配件
2018/05/23 全球购物
skyn ICELAND官网:冰岛成分天然护肤品
2020/08/24 全球购物
工商管理系学生的自我评价分享
2013/11/29 职场文书
医学专业五年以上个人求职信
2013/12/03 职场文书
企业宣传标语
2014/06/09 职场文书
酒店客房服务员岗位职责
2015/04/09 职场文书
python基础之爬虫入门
2021/05/10 Python
Golang 切片(Slice)实现增删改查
2022/04/22 Golang