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


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之一
Apr 27 Javascript
javascript cookie操作类的实现代码小结附使用方法
Jun 02 Javascript
jQuery学习笔记[1] jQuery中的DOM操作
Dec 03 Javascript
封装html的select标签的js操作实例
Jul 02 Javascript
JS 在指定数组中随机取出N个不重复的数据
Jun 10 Javascript
举例说明如何为JavaScript的方法参数设置默认值
Nov 17 Javascript
谈一谈js中的执行环境及作用域
Mar 30 Javascript
Bootstrap CSS组件之按钮组(btn-group)
Dec 17 Javascript
vue中子组件向父组件传递数据的实例代码(实现加减功能)
Apr 20 Javascript
layer ui插件显示tips时,修改字体颜色的实现方法
Sep 11 Javascript
小程序的上传文件接口的注意要点解析
Sep 17 Javascript
解决vue中的无限循环问题
Jul 27 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面向对象全攻略 (十七) 自动加载类
2009/09/30 PHP
php Smarty初体验二 获取配置信息
2011/08/08 PHP
php获取网站根目录物理路径的几种方法(推荐)
2017/03/04 PHP
javascript 单选框,多选框美化代码
2008/08/01 Javascript
Ruffy javascript 学习笔记
2009/11/30 Javascript
js压缩工具 yuicompressor 使用教程
2010/03/31 Javascript
jquery div拖动效果示例代码
2013/12/08 Javascript
javascript实现简单的Map示例介绍
2013/12/23 Javascript
JavaScript中判断页面关闭、页面刷新的实现代码
2014/08/27 Javascript
javascript的日期对象、数组对象、二维数组使用说明
2014/12/22 Javascript
jQuery插件kinMaxShow扩展效果用法实例
2015/05/04 Javascript
jQuery通过写入cookie实现更换网页背景的方法
2016/04/15 Javascript
深入浅析JavaScript中的3DES
2016/08/24 Javascript
Javascript中常见的逻辑题和解决方法
2016/09/17 Javascript
JS函数多个参数默认值指定方法分析
2016/11/28 Javascript
微信小程序中使用javascript 回调函数
2017/05/11 Javascript
react-native使用react-navigation进行页面跳转导航的示例
2017/09/07 Javascript
echarts饼图扇区添加点击事件的实例
2017/10/16 Javascript
微信小程序按钮去除边框线分享页面功能
2018/08/27 Javascript
微信小程序适配iphoneX的实现方法
2018/09/18 Javascript
教你完全理解ReentrantLock重入锁
2019/06/03 Javascript
JavaScript交换两个变量方法实例
2019/11/25 Javascript
在vue中使用vant TreeSelect分类选择组件操作
2020/11/02 Javascript
Python实现多级目录压缩与解压文件的方法
2018/09/01 Python
Python网络爬虫之爬取微博热搜
2019/04/18 Python
在Django的View中使用asyncio的方法
2019/07/12 Python
django admin 自定义替换change页面模板的方法
2019/08/23 Python
flask实现验证码并验证功能
2019/12/05 Python
Opencv图像处理:如何判断图片里某个颜色值占的比例
2020/06/03 Python
学习Python爬虫的几点建议
2020/08/05 Python
Python+OpenCV图像处理—— 色彩空间转换
2020/10/22 Python
美国嘻哈首饰购物网站:Hip Hop Bling
2016/12/30 全球购物
Hanro官网:奢华男士和女士内衣、睡衣和家居服
2018/10/25 全球购物
西安大雁塔导游词
2015/02/10 职场文书
总经理司机岗位职责
2015/04/10 职场文书
RPM包方式安装Oracle21c的方法详解
2021/08/23 Oracle