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


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剩余字数计算的代码
Jul 03 Javascript
JSF中confirm弹出框的用法示例介绍
Jan 07 Javascript
javascript框架设计之框架分类及主要功能
Jun 23 Javascript
纯js代码实现简单计算器
Dec 02 Javascript
js ajaxfileupload.js上传报错的解决方法
May 05 Javascript
js中用cssText设置css样式的简单方法
Sep 19 Javascript
Vue.js组件tabs实现选项卡切换效果
Dec 01 Javascript
js面向对象编程总结
Feb 16 Javascript
AngularJs的UI组件ui-Bootstrap之Tooltip和Popover
Jul 13 Javascript
让IDE识别webpack的别名alias的实现方法
May 06 Javascript
利用js canvas实现五子棋游戏
Oct 11 Javascript
Vue实现一种简单的无限循环滚动动画的示例
Jan 10 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
php数据入库前清理 注意php intval与mysql的int取值范围不同
2010/12/12 PHP
php函数array_merge用法一例(合并同类数组)
2013/02/03 PHP
PHP采集静态页面并把页面css,img,js保存的方法
2014/12/23 PHP
php继承中方法重载(覆盖)的应用场合
2015/02/09 PHP
PHP中函数gzuncompress无法使用的解决方法
2017/03/02 PHP
jquery 操作表格实现代码(多种操作打包)
2011/03/20 Javascript
jquery实现html页面 div 假分页有原理有代码
2014/09/06 Javascript
javascript中bind函数的作用实例介绍
2014/09/28 Javascript
Javascript实现div的toggle效果实例分析
2015/06/09 Javascript
在JavaScript的jQuery库中操作AJAX的方法讲解
2015/08/15 Javascript
JavaScript常用字符串与数组扩展函数小结
2016/04/24 Javascript
JavaScript中setter和getter方法介绍
2016/07/11 Javascript
Jquery组件easyUi实现手风琴(折叠面板)示例
2016/08/23 Javascript
javascript的document中的动态添加标签实现方法
2016/10/24 Javascript
js实现5秒倒计时重新发送短信功能
2017/02/05 Javascript
layui表格实现代码
2017/05/20 Javascript
jquery dataTable 后台加载数据并分页实例代码
2017/06/07 jQuery
Node.js 8 中的重要新特性
2017/06/28 Javascript
JS实现生成由字母与数字组合的随机字符串功能详解
2018/05/25 Javascript
前端Vue项目详解--初始化及导航栏
2019/06/24 Javascript
寻找网站后台地址的python脚本
2014/09/01 Python
Python使用multiprocessing创建进程的方法
2015/06/04 Python
Python字符串切片操作知识详解
2016/03/28 Python
Python检测生僻字的实现方法
2016/10/23 Python
Python 结巴分词实现关键词抽取分析
2017/10/21 Python
Python实现二维数组输出为图片
2018/04/03 Python
opencv python 基于KNN的手写体识别的实例
2018/08/03 Python
python使用配置文件过程详解
2019/12/28 Python
Python加密模块的hashlib,hmac模块使用解析
2020/01/02 Python
英国最大最好的无人机商店:Drones Direct
2019/07/12 全球购物
EM Cosmetics官网:由彩妆大神Michelle Phan创办的独立品牌
2020/04/27 全球购物
竞聘演讲稿精彩开头和结尾
2014/05/14 职场文书
空气环保标语
2014/06/12 职场文书
市委常委会班子党的群众路线教育实践活动整改方案
2014/10/25 职场文书
护士自荐信范文(2016推荐篇)
2016/01/28 职场文书
vue backtop组件的实现完整代码
2021/04/07 Vue.js