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


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 相关文章推荐
Prototype源码浅析 String部分(二)
Jan 16 Javascript
js arguments对象应用介绍
Nov 28 Javascript
jQuery基础框架浅入剖析
Dec 27 Javascript
Yii-自定义删除确认弹框(zyd)jquery实现代码
Mar 04 Javascript
js和jquery中循环的退出和继续学习记录
Sep 06 Javascript
让javascript加载速度倍增的方法(解决JS加载速度慢的问题)
Dec 12 Javascript
jQuery选择器源码解读(一):Sizzle方法
Mar 31 Javascript
jQuery的文档处理程序详解
May 10 Javascript
去除html代码里面的script正则方法
May 19 Javascript
web前端开发upload上传头像js示例代码
Oct 22 Javascript
vue开发调试神器vue-devtools使用详解
Jul 13 Javascript
react 路由Link配置详解
Nov 11 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中动态显示签名和ip原理
2007/03/28 PHP
php写的简易聊天室代码
2011/06/04 PHP
PHP中的函数-- foreach()的用法详解
2013/06/24 PHP
php基于单例模式封装mysql类完整实例
2016/10/18 PHP
PHP解耦的三重境界(浅谈服务容器)
2017/03/13 PHP
php 使用 __call实现重载功能示例
2019/11/18 PHP
JavaScript面向对象之体会[总结]
2008/11/13 Javascript
Mootools 1.2教程 输入过滤第二部分(字符串)
2009/09/15 Javascript
深入理解Javascript闭包 新手版
2010/12/28 Javascript
将中国标准时间转换成标准格式的代码
2014/03/20 Javascript
JS实现从网页顶部掉下弹出层效果的方法
2015/08/06 Javascript
Bootstrap基本组件学习笔记之input输入框组(9)
2016/12/07 Javascript
微信小程序 封装http请求实例详解
2017/01/16 Javascript
完美实现js焦点轮播效果(一)
2017/03/07 Javascript
如何使用JS在HTML中自定义字符串格式化
2017/07/20 Javascript
详解Vue.js Mixins 混入使用
2017/09/15 Javascript
Dropify.js图片宽高自适应的方法
2017/11/27 Javascript
vue.js分页中单击页码更换页面内容的方法(配合spring springmvc)
2018/02/10 Javascript
详解webpack模块加载器兼打包工具
2018/09/11 Javascript
JavaScript函数IIFE使用详解
2019/10/21 Javascript
vue 实现路由跳转时更改页面title
2019/11/05 Javascript
JavaScript常用工具函数汇总(浏览器环境)
2020/09/17 Javascript
Python中的exec、eval使用实例
2014/09/23 Python
python使用marshal模块序列化实例
2014/09/25 Python
python实现列表中由数值查到索引的方法
2018/06/27 Python
python自动化UI工具发送QQ消息的实例
2019/08/27 Python
pandas 中对特征进行硬编码和onehot编码的实现
2019/12/20 Python
如何基于python实现脚本加密
2019/12/28 Python
python GUI库图形界面开发之PyQt5切换按钮控件QPushButton详细使用方法与实例
2020/02/28 Python
HTML实现代码雨源码及效果示例
2020/02/25 HTML / CSS
AmazeUI 面板的实现示例
2020/08/17 HTML / CSS
Prototype如何为一个Ajax添加一个参数
2015/12/06 面试题
校园广播稿500字
2014/02/04 职场文书
《秋游》教学反思
2014/04/24 职场文书
团队会宣传标语
2014/10/09 职场文书
水电工程师岗位职责
2015/02/13 职场文书