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


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 相关文章推荐
js实现图片旋转的三种方法
Apr 10 Javascript
Jquery树插件zTree用法入门教程
Feb 17 Javascript
javascript 对象数组根据对象object key的值排序
Mar 09 Javascript
实现前后端数据交互方法汇总
Apr 07 Javascript
百度地图API之本地搜索与范围搜索
Jul 30 Javascript
jQuery实现textarea自动增长宽高的方法
Dec 18 Javascript
jQuery EasyUI编辑DataGrid用combobox实现多级联动
Aug 29 Javascript
前端js实现文件的断点续传 后端PHP文件接收
Oct 14 Javascript
selenium 与 chrome 进行qq登录并发邮件操作实例详解
Apr 06 Javascript
vue.js给动态绑定的radio列表做批量编辑的方法
Feb 28 Javascript
JS通过ajax + 多列布局 + 自动加载实现瀑布流效果
May 30 Javascript
vue-video-player实现实时视频播放方式(监控设备-rtmp流)
Aug 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
PHP调用Linux的命令行执行文件压缩命令
2013/01/27 PHP
PHP与MYSQL中UTF8编码的中文排序实例
2014/10/21 PHP
php图片添加文字水印实现代码
2016/03/15 PHP
apache php mysql开发环境安装教程
2016/07/28 PHP
CI(CodeIgniter)框架实现图片上传的方法
2017/03/24 PHP
实例讲解PHP验证邮箱是否合格
2019/01/28 PHP
一些相见恨晚的 JavaScript 技巧
2010/04/25 Javascript
js下利用控制器载入对应脚本
2010/07/17 Javascript
Javascript表达式中连续的 &amp;&amp; 和 || 之赋值区别
2010/10/17 Javascript
js静态方法与实例方法分析
2011/07/04 Javascript
详解js闭包
2014/09/02 Javascript
JavaScript获取数组最小值和最大值的方法
2015/06/09 Javascript
js实现瀑布流的三种方式比较
2020/06/28 Javascript
文件上传插件SWFUpload的使用指南
2016/11/29 Javascript
JS日程管理插件FullCalendar中文说明文档
2017/02/06 Javascript
xmlplus组件设计系列之下拉刷新(PullRefresh)(6)
2017/05/03 Javascript
Vuejs+vue-router打包+Nginx配置的实例
2018/09/20 Javascript
vuex的module模块用法示例
2018/11/12 Javascript
JavaScript实现随机点名器
2020/03/25 Javascript
python实现的简单RPG游戏流程实例
2015/06/28 Python
Python绘制并保存指定大小图像的方法
2019/01/10 Python
使用Python批量修改文件名的代码实例
2019/01/24 Python
通过实例了解Python str()和repr()的区别
2020/01/17 Python
Python调用SMTP服务自动发送Email的实现步骤
2021/02/07 Python
HTML5 与 XHTML2
2008/10/17 HTML / CSS
日本快乐生活方式购物网站:Shop Japan
2018/07/17 全球购物
英国设计师泳装、沙滩装和比基尼在线精品店:Beach Cafe
2019/08/28 全球购物
J2EE系统只能是基于web
2015/09/08 面试题
建筑工程专业毕业生自荐信
2013/10/19 职场文书
大四学年自我鉴定
2013/11/13 职场文书
留学推荐信中文范文三篇
2014/01/25 职场文书
法人委托书范本
2014/04/04 职场文书
导游词范文
2015/02/13 职场文书
公司捐书倡议书
2015/04/27 职场文书
2016年度师德标兵先进事迹材料
2016/02/26 职场文书
MySQL8.0无法启动3534的解决方法
2021/06/03 MySQL