微信小程序開(kāi)發(fā)之組件設(shè)計(jì)規(guī)范
微信小程序組件設(shè)計(jì)規(guī)范
組件化開(kāi)發(fā)的思想貫穿著我開(kāi)發(fā)設(shè)計(jì)過(guò)程的始終。在過(guò)去很長(zhǎng)一段時(shí)間里,我都受益于這種思想。
- 組件可復(fù)用 - 減少了重復(fù)代碼量
- 組件做為抽離的功能單元 - 方便維護(hù)
- 組件作為template使用,可以方便計(jì)算各種屬性而不是在wxml引入wxs
在日常的小程序開(kāi)發(fā)組件過(guò)程中,我一般會(huì)遵循如下幾個(gè)規(guī)則:
1.樣式獨(dú)立 & 依賴(lài)獨(dú)立
在組件開(kāi)發(fā)過(guò)程中,組件可以依賴(lài)于全局樣式,組件在引入時(shí),使用該頁(yè)面樣式和全局樣式共同渲染。
options: {
addGlobalClass: true,
multipleSlots: true
}
但是基于組件的可移植性考慮,建議每個(gè)組件配置為不依賴(lài)于全局樣式。
options: {
addGlobalClass: false,
multipleSlots: true
}
選擇在每個(gè)組件的wxss配置該組件所需的樣式。
組件開(kāi)發(fā)過(guò)程中,組件可以引入app.js,基于
const app = getApp();
但是基于方便移植的角度考慮,組件中獲取全局?jǐn)?shù)據(jù)使用storge更為合適。
即使依賴(lài)于某些js文件,可將該文件放入組件目錄下并引入。
屬性值設(shè)置偵聽(tīng)器
組件可以接收頁(yè)面?zhèn)魅氲闹担墙M件內(nèi)數(shù)據(jù)格式或許不匹配頁(yè)面展示需求,需要做某些調(diào)整,這些調(diào)整建議在組件內(nèi)實(shí)現(xiàn)。組件內(nèi)數(shù)據(jù)的修改不會(huì)影響到頁(yè)面內(nèi)數(shù)據(jù)。
properties: {
active:{
type:Number,
observer:function(newVal,oldVal){
//對(duì)數(shù)據(jù)進(jìn)行預(yù)處理
}
}
}
3.所有使頁(yè)面棧發(fā)生變動(dòng)的操作都交給頁(yè)面完成
在A頁(yè)面內(nèi)點(diǎn)擊組件C會(huì)跳轉(zhuǎn)到E頁(yè)面
在B頁(yè)面內(nèi)點(diǎn)擊組件C會(huì)跳轉(zhuǎn)到F頁(yè)面
這種情況下可以將點(diǎn)擊事件交給頁(yè)面來(lái)處理,組件僅做一個(gè)事件通知。具體跳轉(zhuǎn)事件交給頁(yè)面內(nèi)函數(shù)實(shí)現(xiàn)。
組件內(nèi)使用:
this.triggerEvent('click',args)
頁(yè)面A:
<c-component bind:click="navtoPageE" />
頁(yè)面B:
<c-component bind:click="navtoPageF" />
組件內(nèi)盡量不要嵌套組件
曾在組件中使用一個(gè) loading組件,但是通過(guò)參數(shù)控制該loading組件展示,出現(xiàn)無(wú)法隱藏問(wèn)題時(shí),無(wú)法定位到具體組件。
組件定義統(tǒng)一的class
這是為了方便統(tǒng)一調(diào)用組件中某個(gè)方法,作為模板使用常使用到該方法。
let acmp = this.selectAllComponents('.card')
acmp.forEach(function (ele, index) {
ele.closeActionBar();
})
使用組件的生命周期
組件支持生命周期,某些只需要初始化一次的數(shù)據(jù),或者計(jì)數(shù)器函數(shù),請(qǐng)?jiān)赼ttached內(nèi)完成
lifetimes:{
attached(){
this.setData({
openid:app.globalData.openid
})
}
}
參考文檔
微信小程序--頁(yè)面與組件之間如何進(jìn)行信息傳遞和函數(shù)調(diào)用
微信小程序--關(guān)于加快小程序開(kāi)發(fā)的幾個(gè)小建議
總結(jié)
到此這篇關(guān)于微信小程序開(kāi)發(fā)之組件設(shè)計(jì)規(guī)范的文章就介紹到這了,更多相關(guān)微信小程序組件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JavaScript中實(shí)現(xiàn)最高效的數(shù)組亂序方法
這篇文章主要介紹了JavaScript中實(shí)現(xiàn)最高效的數(shù)組亂序方法,數(shù)組亂序的意思是,把數(shù)組內(nèi)的所有元素排列順序打亂,需要的朋友可以參考下2014-10-10
js+html+css實(shí)現(xiàn)簡(jiǎn)單電子時(shí)鐘
這篇文章主要為大家詳細(xì)介紹了js+html+css實(shí)現(xiàn)簡(jiǎn)單電子時(shí)鐘,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-06-06
js下寫(xiě)一個(gè)事件隊(duì)列操作函數(shù)
異步操作可能會(huì)產(chǎn)生你不希望的事件觸發(fā)順序。這個(gè)問(wèn)題以前也遇到過(guò),當(dāng)時(shí)沒(méi)想太多,也就是直接多層嵌套(在ajax返回以后嵌套下一個(gè)事件)來(lái)解決。2010-07-07
利用JS實(shí)現(xiàn)機(jī)器人總動(dòng)員小游戲
這篇文章主要介紹了如何利用HTML+CSS+JS編寫(xiě)一個(gè)機(jī)器人總動(dòng)員小游戲,代碼簡(jiǎn)單易懂對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-11-11
小程序?qū)崿F(xiàn)多個(gè)選項(xiàng)卡切換
這篇文章主要為大家詳細(xì)介紹了小程序?qū)崿F(xiàn)多個(gè)選項(xiàng)卡切換,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-06-06
使用 JavaScript如何獲取當(dāng)月的第一天和最后一天
這篇文章主要介紹了使用 JavaScript如何獲取當(dāng)月的第一天和最后一天,通過(guò)本文學(xué)習(xí)了如何使用 JavaScript 中的Date.getFullYear()和?Date.getMonth()方法獲得某個(gè)特定月份的第一天和最后一天,需要的朋友可以參考下2023-05-05

