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


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仅用3行代码实现的显示与隐藏功能完整实例
Oct 08 Javascript
几种经典排序算法的JS实现方法
Mar 25 Javascript
AngularJS入门之动画
Jul 27 Javascript
基于JavaScript实现在新的tab页打开url
Aug 04 Javascript
微信小程序 后台https域名绑定和免费的https证书申请详解
Nov 10 Javascript
AngularJS封装指令方法详解
Dec 12 Javascript
Bootstrap modal使用及点击外部不消失的解决方法
Dec 13 Javascript
20行JS代码实现粘贴板复制功能
Feb 06 Javascript
Vue-cli中为单独页面设置背景色的实现方法
Feb 11 Javascript
基于bootstrap页面渲染的问题解决方法
Aug 09 Javascript
node中实现删除目录的几种方法
Jun 24 Javascript
vue 子组件和父组件传值的示例
Sep 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中实现生成静态文件的方法缓解服务器压力
2014/01/07 PHP
thinkphp中memcache的用法实例
2014/11/29 PHP
PHP使用curl模拟post上传及接收文件的方法
2016/03/04 PHP
PHP环境搭建(php+Apache+mysql)
2016/11/14 PHP
php rsa 加密,解密,签名,验签详解
2016/12/06 PHP
PHP中Laravel 关联查询返回错误id的解决方法
2017/04/01 PHP
PHP使用GD库制作验证码的方法(点击验证码或看不清会刷新验证码)
2017/08/15 PHP
php输出控制函数和输出函数生成静态页面
2019/06/27 PHP
jQuery get和post 方法传值注意事项
2009/11/03 Javascript
使用基于jquery的gamequery插件做JS乒乓球游戏
2011/07/31 Javascript
javascript中的数字与字符串相加实例分析
2011/08/14 Javascript
javascript学习基础笔记之DOM对象操作
2011/11/03 Javascript
javascript获取form里的表单元素的示例代码
2014/02/14 Javascript
基于jquery实现三级下拉菜单
2016/05/10 Javascript
JavaScript提升性能的常用技巧总结【经典】
2016/06/20 Javascript
jQuery实现的兼容性浮动层示例
2016/08/02 Javascript
酷! 不同风格页面布局幻灯片特效js实现
2021/02/19 Javascript
用AngularJS的指令实现tabs切换效果
2016/08/31 Javascript
基于JS设计12306登录页面
2016/12/28 Javascript
js 调用百度分享功能
2017/02/27 Javascript
Angular2生命周期钩子函数的详细介绍
2017/07/10 Javascript
AngularJS监听ng-repeat渲染完成的两种方法
2018/01/16 Javascript
JS+canvas画布实现炫酷的旋转星空效果示例
2019/02/13 Javascript
12 种使用Vue 的最佳做法
2020/03/30 Javascript
JQuery使用数组遍历跳出each循环
2020/09/01 jQuery
Python的Flask框架标配模板引擎Jinja2的使用教程
2016/07/12 Python
Python函数的参数常见分类与用法实例详解
2019/03/30 Python
Puppeteer使用示例详解
2019/06/20 Python
Windows10下 python3.7 安装 facenet的教程
2019/09/10 Python
浅谈Python中的生成器和迭代器
2020/06/19 Python
解决keras使用cov1D函数的输入问题
2020/06/29 Python
匈牙利最大的健身制造商和销售商:inSPORTline
2018/10/30 全球购物
2016年全国助残日活动总结
2016/04/01 职场文书
工作一年自我鉴定
2019/06/20 职场文书
判断Python中的Nonetype类型
2021/05/25 Python
Redis RDB技术底层原理详解
2021/09/04 Redis