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


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 使用点滴函数代码
May 20 Javascript
js操作输入框提示信息且响应鼠标事件
Mar 25 Javascript
JS中FRAME的操作问题实例分析
Oct 21 Javascript
javascript中HTMLDOM操作详解
Dec 11 Javascript
干货分享:让你分分钟学会javascript闭包
Dec 25 Javascript
Javascript 实现简单计算器实例代码
Oct 23 Javascript
js判断手机号是否正确并返回的实现代码
Jan 17 Javascript
详谈$.data()的用法和作用
Feb 13 Javascript
Vue中添加过渡效果的方法
Mar 16 Javascript
JS中的三个循环小结
Jun 20 Javascript
详解如何制作并发布一个vue的组件的npm包
Nov 10 Javascript
node读写Excel操作实例分析
Nov 06 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作的文本留言本的例子(三)
2006/10/09 PHP
PHP UTF8编码内的繁简转换类
2009/07/20 PHP
php 在windows下配置虚拟目录的方法介绍
2013/06/26 PHP
一个简单且很好用的php分页类
2013/10/26 PHP
ThinkPHP实现批量删除数据的代码实例
2014/07/02 PHP
深入认识JavaScript中的函数
2007/01/22 Javascript
JavaScript的Cookies
2008/01/16 Javascript
模拟多级复选框效果的jquery代码
2013/08/13 Javascript
JavaScript中检测变量是否存在遇到的一些问题
2013/11/11 Javascript
jQuery实现复选框全选/取消全选/反选及获得选择的值
2014/06/12 Javascript
不同编码的页面表单数据乱码问题解决方法
2015/02/15 Javascript
Jquery树插件zTree用法入门教程
2015/02/17 Javascript
js控制页面的全屏展示和退出全屏显示的方法
2015/03/10 Javascript
chrome调试javascript详解
2015/10/21 Javascript
javascript检测flash插件是否被禁用的方法
2016/01/14 Javascript
基于jQuery实现动态搜索显示功能
2016/05/05 Javascript
详解jQuery中的事件
2016/12/14 Javascript
在Vue中使用icon 字体图标的方法
2019/06/14 Javascript
vue滚动tab跟随切换效果
2020/06/29 Javascript
layer ui插件显示tips时,修改字体颜色的实现方法
2019/09/11 Javascript
Postman无法正常返回结果问题解决
2020/08/28 Javascript
python基础教程之缩进介绍
2014/08/29 Python
Python深入学习之内存管理
2014/08/31 Python
Python线程的两种编程方式
2015/04/14 Python
Python变量作用范围实例分析
2015/07/07 Python
详解通过API管理或定制开发ECS实例
2018/09/30 Python
详解Python下载图片并保存本地的两种方式
2019/05/15 Python
Django中使用 Closure Table 储存无限分级数据
2019/06/06 Python
Tensorflow不支持AVX2指令集的解决方法
2020/02/03 Python
BIBLOO捷克:购买女装、男装、童装、鞋和配件
2017/01/27 全球购物
迎接领导欢迎词
2014/01/11 职场文书
运输服务质量承诺书
2014/03/27 职场文书
软件项目实施计划书
2014/05/02 职场文书
质监局领导班子对照检查材料思想汇报
2014/09/27 职场文书
Redis如何一键部署脚本
2021/04/12 Redis
MyBatis-Plus 批量插入数据的操作方法
2021/09/25 Java/Android