微信小程序组件设计规范

组件化开发的思想贯穿着我开发设计过程的始终。在过去很长一段时间里,我都受益于这种思想。

  1. 组件可复用 - 减少了重复代码量
  2. 组件做为抽离的功能单元 - 方便维护
  3. 组件作为template使用,可以方便计算各种属性而不是在wxml引入wxs

在日常的小程序开发组件过程中,我一般会遵循如下几个规则:

1.样式独立 & 依赖独立

在组件开发过程中,组件可以依赖于全局样式,组件在引入时,使用该页面样式和全局样式共同渲染。

options: {
addGlobalClass: true,
multipleSlots: true
}

但是基于组件的可移植性考虑,建议每个组件配置为不依赖于全局样式。

options: {
addGlobalClass: false,
multipleSlots: true
}

选择在每个组件的wxss配置该组件所需的样式。

组件开发过程中,组件可以引入app.js,基于

const app = getApp();

但是基于方便移植的角度考虑,组件中获取全局数据使用storge更为合适。

即使依赖于某些js文件,可将该文件放入组件目录下并引入。

  1. 属性值设置侦听器

组件可以接收页面传入的值,但是组件内数据格式或许不匹配页面展示需求,需要做某些调整,这些调整建议在组件内实现。组件内数据的修改不会影响到页面内数据。

properties: {
active:{
type:Number,
observer:function(newVal,oldVal){
//对数据进行预处理
}
}
}

3.所有使页面栈发生变动的操作都交给页面完成

在A页面内点击组件C会跳转到E页面

在B页面内点击组件C会跳转到F页面

这种情况下可以将点击事件交给页面来处理,组件仅做一个事件通知。具体跳转事件交给页面内函数实现。

组件内使用:

this.triggerEvent('click',args)

页面A:

<c-component bind:click="navtoPageE" />

页面B:

<c-component bind:click="navtoPageF" />
  1. 组件内尽量不要嵌套组件

曾在组件中使用一个 loading组件,但是通过参数控制该loading组件展示,出现无法隐藏问题时,无法定位到具体组件。

  1. 组件定义统一的class

这是为了方便统一调用组件中某个方法,作为模板使用常使用到该方法。

let acmp = this.selectAllComponents('.card')
acmp.forEach(function (ele, index) {
ele.closeActionBar();
})
  1. 使用组件的生命周期

组件支持生命周期,某些只需要初始化一次的数据,或者计数器函数,请在attached内完成

lifetimes:{
attached(){
this.setData({
openid:app.globalData.openid
})
}
}

参考文档

微信小程序--页面与组件之间如何进行信息传递和函数调用 - Kindear - 博客园 (cnblogs.com)

微信小程序--关于加快小程序开发的几个小建议 - Kindear - 博客园 (cnblogs.com)

微信小程序组件设计规范的更多相关文章

  1. 微信小程序组件学习 -- 注册页面

    微信小程序组件使用手册地址: 1. 百度搜索"微信公众平台",扫码登录之后,点击帮助文档里面的普通小程序. 2. 接着选择"开发"-->"组件& ...

  2. 【腾讯Bugly干货分享】打造“微信小程序”组件化开发框架

    本文来自于腾讯Bugly公众号(weixinBugly),未经作者同意,请勿转载,原文地址:http://mp.weixin.qq.com/s/2nQzsuqq7Avgs8wsRizUhw 作者:Gc ...

  3. 微信小程序(组件demo)以及预览方法:(小程序交流群:604788754)

    1. 获取微信小程序的 AppID 登录 https://mp.weixin.qq.com ,就可以在网站的"设置"-"开发者设置"中,查看到微信小程序的 Ap ...

  4. 详解封装微信小程序组件及小程序坑(附带解决方案)

    一.序 上一篇介绍了如何从零开发微信小程序,博客园审核变智障了,每次代码都不算篇幅,好好滴一篇原创,不到3分钟从首页移出来了.这篇介绍一下组件封装和我的踩坑历程. 二.封装微信小程序可复用组件 首先模 ...

  5. 微信小程序组件通信

    父子通信 在子组件的对应js中 properties:{ prop名字:数据类型, prop名字:{ type:数据类型, value:默认值 } } 在父组件的wxml模板中找到子组件标签 < ...

  6. 微信小程序组件化实践

    Do Not Repeat Yourself 如何提高代码质量,方法有许多:抽象.模块.组件化,我认为它们的中心点都是--Do Not Repeat Yourself. 小程序组件化 我们先看看小程序 ...

  7. 微信小程序——组件(二)

    在上篇文章组件(一)里已经讲解了如何创建一个项目,现在继续...讲解一个页面布局以及各个组件的使用.在学习过程中,发现小程序支持flex布局,这对于学习过react native的人来说太好了,布局方 ...

  8. 微信小程序组件解读和分析:六、progress进度条

    progress进度条组件说明: 进度条,就是表示事情当前完成到什么地步了,可以让用户视觉上感知事情的执行.progress进度条是微信小程序的组件,和HTML5的进度条progress类似. pro ...

  9. 微信小程序组件解读和分析:五、text文本

    text文本组件说明: text 文本就是微信小程序中显示出来的文本. text文本组件的示例代码运行效果如下: 下面是WXML代码: [XML] 纯文本查看 复制代码 ? 1 2 3 4 <v ...

随机推荐

  1. 前瞻|Amundsen的数据血缘功能

    目前,Amundsen并不支持表级别和列级别的数据血缘功能,也没有办法展示数据的来龙去脉. 作为Amundsen一项非常核心的功能,Lineage功能早已经提上日程,并进入设计与研发阶段.本位将展示此 ...

  2. golang 性能调优分析工具 pprof(下)

    golang 性能调优分析工具 pprof(上)篇, 这是下篇. 四.net/http/pprof 4.1 代码例子 1 go version go1.13.9 把上面的程序例子稍微改动下,命名为 d ...

  3. Java例题_39 判断奇偶后分数累加

    1 /*39 [程序 39 分数累加] 2 题目:编写一个函数,输入 n 为偶数时,调用函数求 1/2+1/4+...+1/n,当输入 n 为奇数时,调用函数 3 1/1+1/3+...+1/n 4 ...

  4. SVN讲解

    1.SVN是什么? 代码版本管理工具 它能记住你每次的修改 查看所有的修改记录 恢复到任何历史版本 恢复到已经删除的文件 2.SVN和Git相比,有什么优势? 使用简单,上手快 git没有目录级权限控 ...

  5. Qt信号槽源码剖析(二)

    大家好,我是IT文艺男,来自一线大厂的一线程序员 上节视频给大家讲解了Qt信号槽的基本概念.元对象编译器.示例代码以及Qt宏:今天接着深入分析,进入Qt信号槽源码剖析系列的第二节视频. Qt信号槽的宏 ...

  6. 并发编程(ReentrantLock&&同步模式之顺序控制)

    4.13 ReentrantLock 相对于 synchronized 它具备如下特点 可中断 可以设置超时时间 可以设置为公平锁 支持多个条件变量,即对与不满足条件的线程可以放到不同的集合中等待 与 ...

  7. MySQL数据库高级五:主从复制

    主机只能一台 从机去复制 单表500万上限

  8. 现代 CLI 和 GUI 方案指南

    原文链接:http://axuebin.com/articles/fe-solution/cli/desc.html,转载请联系 写在前面 提到初始化项目,那就必须提到脚手架这个名词,那为什么这篇文章 ...

  9. 这可能是最容易理解的 Go Mutex 源码剖析

    Hi,大家好,我是 haohongfan. 上一篇文章<一文完全掌握 Go math/rand>,我们知道 math/rand 的 global rand 有一个全局锁,我的文章里面有一句 ...

  10. Java执行groovy脚本的两种方式

    记录Java执行groovy脚本的两种方式,简单粗暴: 一种是通过脚本引擎ScriptEngine提供的eval(String)方法执行脚本内容:一种是执行groovy脚本: 二者都通过Invocab ...