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


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 相关文章推荐
在Ajax中使用Flash实现跨域数据读取的实现方法
Dec 02 Javascript
JQuery中阻止事件冒泡几种方式及其区别介绍
Jan 15 Javascript
JS字符串拼接在ie中都报错的解决方法
Mar 27 Javascript
Jquery实现由下向上展开效果的例子
Dec 08 Javascript
JS实现带提示的星级评分效果完整实例
Oct 30 Javascript
基于jQuery实现仿QQ空间送礼物功能代码
May 24 Javascript
JS正则验证多个邮箱完整实例【邮箱用分号隔开】
Apr 19 Javascript
详解原生js实现offset方法
Jun 15 Javascript
Node.js 的模块知识汇总
Aug 16 Javascript
详解微信小程序与内嵌网页交互实现支付功能
Oct 22 Javascript
原生JavaScript之es6中Class的用法分析
Feb 23 Javascript
vue-video-player 断点续播的实现
Feb 01 Vue.js
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
Discuz 模板语句分析及知识技巧
2009/08/21 PHP
php模拟post行为代码总结(POST方式不是绝对安全)
2012/02/22 PHP
php比较多维数组中值的大小排序实现代码
2012/09/08 PHP
PHP中提问频率最高的11个面试题和答案
2014/09/02 PHP
php自定义hash函数实例
2015/05/05 PHP
PHP实现的购物车类实例
2015/06/17 PHP
php实现统计目录文件大小的函数
2015/12/25 PHP
Laravel实现定时任务的示例代码
2017/08/10 PHP
在IE下获取object(ActiveX)的Param的代码
2009/09/15 Javascript
常用Extjs工具:Extjs.util.Format使用方法
2012/03/22 Javascript
Google的跟踪代码 动态加载js代码方法应用
2012/11/12 Javascript
javascript学习(二)javascript常见问题总结
2013/01/02 Javascript
JQuery的AJAX实现文件下载的小例子
2013/05/15 Javascript
jquery 操作iframe的几种方法总结
2013/12/13 Javascript
JS实现上下左右对称的九九乘法表
2016/02/22 Javascript
使用ES6语法重构React代码详解
2017/05/09 Javascript
30分钟快速实现小程序语音识别功能
2018/11/27 Javascript
Bootstrap4 gulp 配置详解
2019/01/06 Javascript
mock.js模拟前后台交互
2019/07/25 Javascript
[55:35]DOTA2-DPC中国联赛 正赛 CDEC vs Dragon BO3 第二场 1月22日
2021/03/11 DOTA
Python编程之属性和方法实例详解
2015/05/19 Python
Python对文件操作知识汇总
2016/05/15 Python
python抽取指定url页面的title方法
2018/05/11 Python
在pycharm 中添加运行参数的操作方法
2019/01/19 Python
详解canvas在圆弧周围绘制文本的两种写法
2018/05/22 HTML / CSS
HTML5新标签兼容——&gt; 的两种方法
2018/09/12 HTML / CSS
微软马来西亚官方网站:Microsoft马来西亚
2019/11/22 全球购物
迪卡侬印尼体育用品商店:Decathlon印尼
2020/03/11 全球购物
优秀护士获奖感言
2014/02/20 职场文书
诚信考试标语
2014/06/24 职场文书
自我介绍演讲稿范文
2014/08/21 职场文书
五好家庭事迹材料
2014/12/20 职场文书
行政处罚事先告知书
2015/07/01 职场文书
证婚人致辞精选
2015/07/28 职场文书
SQLServer2008提示评估期已过解决方案
2021/04/12 SQL Server
新手必备之MySQL msi版本下载安装图文详细教程
2021/05/21 MySQL