微信小程序开发之组件设计规范
作者:Kindear 发布时间:2024-04-18 09:35:15
微信小程序组件设计规范
组件化开发的思想贯穿着我开发设计过程的始终。在过去很长一段时间里,我都受益于这种思想。
组件可复用 - 减少了重复代码量
组件做为抽离的功能单元 - 方便维护
组件作为template使用,可以方便计算各种属性而不是在wxml引入wxs
在日常的小程序开发组件过程中,我一般会遵循如下几个规则:
1.样式独立 & 依赖独立
在组件开发过程中,组件可以依赖于全局样式,组件在引入时,使用该页面样式和全局样式共同渲染。
options: {
addGlobalClass: true,
multipleSlots: true
}
但是基于组件的可移植性考虑,建议每个组件配置为不依赖于全局样式。
options: {
addGlobalClass: false,
multipleSlots: true
}
选择在每个组件的wxss配置该组件所需的样式。
组件开发过程中,组件可以引入app.js,基于
const app = getApp();
但是基于方便移植的角度考虑,组件中获取全局数据使用storge更为合适。
即使依赖于某些js文件,可将该文件放入组件目录下并引入。
属性值设置 *
组件可以接收页面传入的值,但是组件内数据格式或许不匹配页面展示需求,需要做某些调整,这些调整建议在组件内实现。组件内数据的修改不会影响到页面内数据。
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" />
组件内尽量不要嵌套组件
曾在组件中使用一个 loading组件,但是通过参数控制该loading组件展示,出现无法隐藏问题时,无法定位到具体组件。
组件定义统一的class
这是为了方便统一调用组件中某个方法,作为模板使用常使用到该方法。
let acmp = this.selectAllComponents('.card')
acmp.forEach(function (ele, index) {
ele.closeActionBar();
})
使用组件的生命周期
组件支持生命周期,某些只需要初始化一次的数据,或者计数器函数,请在attached内完成
lifetimes:{
attached(){
this.setData({
openid:app.globalData.openid
})
}
}
参考文档
微信小程序--页面与组件之间如何进行信息传递和函数调用
微信小程序--关于加快小程序开发的几个小建议
总结
来源:https://www.cnblogs.com/masterchd/p/14804156.html


猜你喜欢
- 本文实例讲述了Python 网络编程之UDP发送接收数据功能。分享给大家供大家参考,具体如下:demo.py(UDP发送数据):import
- 1 引言在进行图像处理过程中,我们经常会遇到一些和物体轮廓相关的操作,比如求目标轮廓的周长面积等,我们直接使用Opencv的findCont
- 可以查看: 代码如下:OPEN SYMMETRIC KEY 命令关于 对称密钥加密使用证书解密 CREATE MASTER KEY ENC
- 这篇文章主要介绍了Python内置加密模块用法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可
- 本文实例讲述了Python基于递归算法求最小公倍数和最大公约数。分享给大家供大家参考,具体如下:# 最小公倍数def lcm(a, b, c
- 测试异常情况-- 1. 查询张三余额select * from account where name = '张三';-- 2
- 浏览网页的时候经常会碰到一些不认识的英文单词,或者想知道一些中文单词的翻译,这时候再去找翻译软件或者翻译网站就有些麻烦了。因此我做了一个“中
- 前言“幸运牛牛套圈圈”套住欢乐,圈住幸福,等你来挑战!哈喽,大家上午好,我是你们的栗子同学,今天来给
- 本文实例讲述了Python双精度浮点数运算并分行显示操作。分享给大家供大家参考,具体如下:#coding=utf8def doubleTyp
- 方式一: os.fork()# -*- coding:utf-8 -*-"""pid=os.fork() &n
- 在日常工作中,可能会遇到各类表格合并的需求。这类需求只要搞懂核心原理都很简单,本质都是万变不离其宗,相信大部分读者都能解决大部分需求。基本思
- 相对于http协议,http是的特点就是他的安全性,http协议的通信内容用普通的嗅探器可以捕捉到,但是https协议的内容嗅探到的是加密后
- 1、场景1)用户输入完网址后,浏览器直接弹出需要输入用户名/密码PS:此时输入用户名密码即可登录,或者直接带着用户名密码访问网站。假设url
- 1、用apt-get安装mysql#更新一下apt 仓库sudo apt-get update#安装mysql-servicesudo ap
- 学习网络爬虫难免遇到使用代理的情况,下面介绍一下如何使用requests设置代理:如果需要使用代理,你可以通过为任意请求方法提供 proxi
- vue更新到2.0之后,作者就宣告不再对vue-resource更新,而是推荐使用axios。前段时间第一次在项目里用到vue,关于登陆问题
- 骨架提取与分水岭算法也属于形态学处理范畴,都放在morphology子模块内。1、骨架提取骨架提取,也叫二值图像细化。这种算法能将一个连通区
- 说到关于请求方法的分支,让我们来看一下可以用什么好的方法来实现它。 考虑这个 URLconf/view 设计:# urls.pyfrom d
- 1.下载安装Golanghttps://golang.google.cn/dl/一路下一步即可2.下载安装Vscodehttps://vis
- (1)以这张表为例:CREATE TABLE `test` ( `id` varchar(32) CHARACTER