微信小程序组件设计规范

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

  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. ASP.NET OWIN OAuth:refresh token的持久化
  2. 团队项目——编写项目的Spec
  3. randow()方法
  4. KnockoutJS 3.X API 第四章 表单绑定(12) selectedOptions、uniqueName绑定
  5. 作业,备份,存储过程,sqlserver print 语句,输出字符串
  6. 算法最坏,平均和最佳情况(Worst, Average and Best Cases)-------geeksforgeeks 翻译
  7. COUNT(*)与COUNT(列名)的区别(转)
  8. LNMP笔记:更改网站文件和MySQL数据库的存放目录
  9. Colletion View 简单的备忘
  10. DOCKER,需要进入生产实践
  11. 图形用户界面入门:EasyGui - 零基础入门学习Python035
  12. LLVM安装
  13. unbtun python tab补全
  14. js之学习正则表达式
  15. 基于IPV6的数据包分析(更新拓扑加入了linux主机和抓取133icmp包)(第十三组)
  16. excle删除重复项的行,自定义删除第几个
  17. 高级组件——进度条 JProgressBar
  18. HEVC与VP9之间的对比
  19. r 随机数
  20. (原创)拨开迷雾见月明-剖析asio中的proactor模式(一)

热门文章

  1. JavaSE(一)
  2. 基于Hive进行数仓建设的资源元数据信息统计:Hive篇
  3. Spring Cloud Alibaba(1)---入门篇
  4. 如何快速在odoo中创建自己的菜单
  5. No_leak(ret2ROP + 低字节改写到syscall)
  6. RE.从单链表开始的数据结构生活(bushi
  7. 自动化kolla-ansible部署ubuntu20.04+openstack-victoria之镜像制作fedora27-18
  8. lvs 负载均衡 _DR模式 _Python脚本
  9. 1. chmod命令
  10. 八戒转世投胎竟然是Java设计模式:桥接模式