微信小程序自定義組件——入門教程

前言

在做微信小程序開發(fā)的過程中邮利,我認為組件式開發(fā)是必須要掌握的一種技能庶溶,官方是這樣介紹的:

從小程序基礎庫版本?1.6.3?開始秘症,小程序支持簡潔的組件化編程匪凉。所有自定義組件相關特性都需要基礎庫版本?1.6.3?或更高捌肴。

開發(fā)者可以將頁面內(nèi)的功能模塊抽象成自定義組件,以便在不同的頁面中重復使用藕咏;也可以將復雜的頁面拆分成多個低耦合的模塊状知,有助于代碼維護。自定義組件在使用時與基礎組件非常相似孽查。

到目前為止饥悴,已經(jīng)有很多優(yōu)秀的微信小程序框架,并且里面封裝了很多基礎的且常用的組件盲再,我建議初學者盡量多看看他們的源碼铺坞,會有很大的幫助的。在這里我給大家介紹幾款我認為比較優(yōu)秀的ui框架洲胖。

1.mpvue(基于 Vue.js 的小程序開發(fā)框架济榨,從底層支持 Vue.js 語法和構(gòu)建工具體系。)

2.minui(基于規(guī)范的小程序 UI 組件庫绿映,自定義標簽組件擒滑,簡潔、易用叉弦、工具化)

3.vant-weapp(輕量丐一、可靠的小程序 UI 組件庫)

接下來大家跟著我的步驟一起來操作吧~~(我會帶大家實現(xiàn)一個收藏功能)

官方并沒有明確規(guī)定自定義組件的文件放在哪里,但是為了自己或團隊的方便淹冰,我還是建議大家在根目錄下創(chuàng)建一個components目錄库车,用來存放所有組件。

項目結(jié)構(gòu)

創(chuàng)建完目錄后樱拴,我們再來看看一個組件需要哪幾部分組成柠衍。

自定義組件類似于頁面,一個自定義組件由?json?wxml?wxss?js?4個文件組成晶乔。例如我們創(chuàng)建一個collection組件珍坊,在components目錄下創(chuàng)建collection目錄。


創(chuàng)建collection目錄

右鍵點擊collection目錄正罢,選擇新建阵漏,再選擇Components會出現(xiàn)如下輸入框。


創(chuàng)建collection組件

在輸入框內(nèi)輸入index后敲回車翻具,會自動幫你創(chuàng)建好自定義組件所需要的文件履怯。(關于index的命名大家可以隨意起),這一點用起來非常方便裆泳。


collection組件目錄結(jié)構(gòu)

要編寫一個自定義組件叹洲,首先需要在?json?文件中進行自定義組件聲明(將?component?字段設為?true?可這一組文件設為自定義組件):

{

????"component": true

}

由于咱們是使用的自動創(chuàng)建方式,所以會自動幫我們聲明好晾虑。如下:


collection/index.json

在自定義組件的?js?文件中疹味,需要使用?Component()?來注冊組件,并提供組件的屬性定義帜篇、內(nèi)部數(shù)據(jù)和自定義方法糙捺。

組件的屬性值和內(nèi)部數(shù)據(jù)將被用于組件?wxml?的渲染,其中笙隙,屬性值是可由組件外部傳入的洪灯。

代碼示例:

collection/index.wxml

<view class='collection'>

????<image src='{{collected?"images/heart-fill.png":"images/heart.png"}}'></image>

</view>

collection/index.wxss

.collection {

? ? width:50rpx;

? ? height:50rpx;

}

.collection image {

? ? width:100%;

? ? height:100%;

}

collection/index.js

Component({

????properties: {

????????// 這里定義了collected屬性,屬性值可以在組件使用時指定

? ? ? ??collected: {?

? ??????????type: Boolean,

? ??????????value: false

?????????}

????},

????data: {

????????// 這里是一些組件內(nèi)部數(shù)據(jù)

????},

????methods: {

????????// 這里是一個自定義方法

????????_onCollection: function() {

????????????????let collected = this.properties.collected;

????????????????this.setData({ collected: !collected })

????????????????this.triggerEvent('collected', this.properties.collected);

????????}

????}

})

由于咱們是使用的自動創(chuàng)建方式竟痰,所以會自動幫我們創(chuàng)建好Component構(gòu)造器签钩。關于Component構(gòu)造器的使用大家可以查看官方文檔,里面介紹的非常詳細坏快,我在這里就不再過多說明了铅檩。點擊跳轉(zhuǎn)

使用自定義組件

使用已注冊的自定義組件前,首先要在頁面的?json?文件中進行引用聲明莽鸿。此時需要提供每個自定義組件的標簽名和對應的自定義組件文件路徑昧旨,如我們在index目錄下使用collection組件:

{????

????"usingComponents": {???????

?????????"v-collection": "/components/collection/index"????

????}

}

注意:必須要使用雙引號,單引號會報錯祥得。

其中“v-collection”大家可以自行命名兔沃。

這樣,在頁面的?wxml?中就可以像使用基礎組件一樣使用自定義組件级及。節(jié)點名即自定義組件的標簽名乒疏,節(jié)點屬性即傳遞給組件的屬性值。

代碼示例:

pages/index/index.wxml

<view>

? ? <!--以下是對一個自定義組件的使用>

? ??<v-collection collected='{{collected}}' bind:collected='onCollection' />

</view>

pages/index/index.js

Page({

? ? data: {

? ? ? ? collected: false

????},

? ? onCollection: function(event) {

? ? ? ? let collected = event.detail;

? ? ? ? let str = collected? '收藏成功':'取消收藏';

? ? ? ? console.log(str);

????}

})

組件有兩種寫法:<v-collection /><v-collection></v-collection>饮焦,大家可以自行選擇

如果在組件內(nèi)使用本地圖片或圖標的話怕吴,我建議大家在當前組件目錄下創(chuàng)建一個images來存放組件所需的圖標,便于日后的維護县踢。

collection下的images目錄

以上代碼可以直接復制使用械哟。

如有疑問歡迎大家下方留言。

附贈一個自己開發(fā)的小程序:(大部分功能全都是由組件構(gòu)成)


中小學古詩詞大全
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末殿雪,一起剝皮案震驚了整個濱河市暇咆,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌丙曙,老刑警劉巖爸业,帶你破解...
    沈念sama閱讀 221,888評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異亏镰,居然都是意外死亡扯旷,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,677評論 3 399
  • 文/潘曉璐 我一進店門索抓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來钧忽,“玉大人毯炮,你說我怎么就攤上這事∷屎冢” “怎么了桃煎?”我有些...
    開封第一講書人閱讀 168,386評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長大刊。 經(jīng)常有香客問我为迈,道長,這世上最難降的妖魔是什么缺菌? 我笑而不...
    開封第一講書人閱讀 59,726評論 1 297
  • 正文 為了忘掉前任葫辐,我火速辦了婚禮,結(jié)果婚禮上伴郁,老公的妹妹穿的比我還像新娘耿战。我一直安慰自己,他們只是感情好焊傅,可當我...
    茶點故事閱讀 68,729評論 6 397
  • 文/花漫 我一把揭開白布昆箕。 她就那樣靜靜地躺著,像睡著了一般租冠。 火紅的嫁衣襯著肌膚如雪鹏倘。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,337評論 1 310
  • 那天顽爹,我揣著相機與錄音纤泵,去河邊找鬼。 笑死镜粤,一個胖子當著我的面吹牛捏题,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播肉渴,決...
    沈念sama閱讀 40,902評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼公荧,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了同规?” 一聲冷哼從身側(cè)響起循狰,我...
    開封第一講書人閱讀 39,807評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎券勺,沒想到半個月后绪钥,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,349評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡关炼,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,439評論 3 340
  • 正文 我和宋清朗相戀三年程腹,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片儒拂。...
    茶點故事閱讀 40,567評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡寸潦,死狀恐怖色鸳,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情见转,我是刑警寧澤命雀,帶...
    沈念sama閱讀 36,242評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站池户,受9級特大地震影響咏雌,放射性物質(zhì)發(fā)生泄漏凡怎。R本人自食惡果不足惜校焦,卻給世界環(huán)境...
    茶點故事閱讀 41,933評論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望统倒。 院中可真熱鬧寨典,春花似錦、人聲如沸房匆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,420評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽浴鸿。三九已至井氢,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間岳链,已是汗流浹背花竞。 一陣腳步聲響...
    開封第一講書人閱讀 33,531評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留掸哑,地道東北人约急。 一個月前我還...
    沈念sama閱讀 48,995評論 3 377
  • 正文 我出身青樓,卻偏偏與公主長得像苗分,于是被迫代替她去往敵國和親厌蔽。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,585評論 2 359

推薦閱讀更多精彩內(nèi)容