微信小程序中的template和component

1弛房、template

1.1 template的基本用法

通常值骇,對(duì)于一些簡單的莹菱、需要展示在頁面中的內(nèi)容,且在項(xiàng)目中需要多次使用該內(nèi)容塊的時(shí)候吱瘩,為了提高復(fù)用性道伟,可以考慮使用template來書寫這部分內(nèi)容。

使用template時(shí)使碾,首先使用name屬性給template命名蜜徽,然后在使用template的時(shí)候用is屬性來說明使用的是哪個(gè)模板。

此外票摇,一個(gè).wxml文件內(nèi)可以定義多個(gè)template模板(name屬性值需要不同拘鞋,用于區(qū)分這些模板)。

<!--index.wxml-->
<template name="people">
  <view>
    <view>姓名: {{name}}</view>
    <view>性別: {{sex}}</view>
    <view>年齡: {{age}}</view>
  </view>
</template>

<!--使用name=“people”的template模板-->
<template is="people" data="{{...boy}}"></template>
//index.js
Page({
  data: {
    boy: {
      name: "張三",
      sex: "男",
      age: 18
    }
  }
})

不過一般template不會(huì)直接寫在要使用該模板的文件內(nèi)矢门,我們可以把它寫在外部盆色,然后通過引入外部文件來使用。

1.2 import和include

引入外部文件有兩種方式颅和,一種是import傅事,一種是include。

1.2.1 import

使用外部的template模板峡扩,首先需要在外部文件中寫好template模板蹭越。

<!--template.wxml-->
<view>
  你看不見我,你看不見我教届,略略略(?????)
</view>

<template name="outside">
  我是外部的template
</template>

如上响鹃,我們?cè)谕獠啃陆藗€(gè)template.wxml文件,然后在該文件下定義了一個(gè)name=“outside”的模板案训,下面可以使用import標(biāo)簽引入該模板到別的文件內(nèi)买置。

<!--index.wxml-->
<!-- 通過import標(biāo)簽引入外部wxml文件 -->
<import src="/template/template.wxml"></import>

<!-- 使用外部引入的template標(biāo)簽 -->
<template is="outside"></template>
預(yù)覽圖

此外,import有個(gè)作用域的概念强霎,即import只會(huì)把外部文件的template(模板)import進(jìn)去忿项。


a import b,b import c城舞。此時(shí)轩触,a可以使用b定義的template,b可以使用c定義的template家夺,但是a不可以使用c定義的template脱柱。

<!--c.wxml-->
<template name="c">
  <text>c</text>
</template>
<!--b.wxml-->
<template name="b">
  <text>b</text>
  <!--b import了c-->
  <import src="c.wxml"></import>
</template>
<!--a.wxml-->
<template name="a">
  <text>a</text>
  <!--a只import了b.wxml-->
  <import src="b.wxml"></import>
  <template is="b"></template>
  <template is="c"></template>
</template>
預(yù)覽圖
not found

結(jié)果如圖,作用域可以避免程序進(jìn)入死循環(huán)拉馋,比如a和b之間相互import榨为。

<!--a.wxml-->
<template name="a">
  <text>a</text>
  <import src="b.wxml"></import>
  <template is="b"></template>
</template>
<!--b.wxml-->
<template name="b">
  <text>b</text>
  <import src="a.wxml"></import>
  <template src="a"></template>
</template>
預(yù)覽圖

可以看到惨好,由于作用域的限制,此時(shí)程序并沒有進(jìn)入死循環(huán)随闺。

1.2.2 include

include和import相反日川,include是把目標(biāo)文件里除了template以外的代碼引入進(jìn)去。

<!--template.wxml-->
<view>
  你看不見我板壮,你看不見我逗鸣,略略略(?????)
</view>

<template name="outside">
  我是外部的template
</template>
<!--index.wxml-->
<!-- 通過import標(biāo)簽引入外部template -->
<include src="/template/template.wxml" />

<!-- 使用外部template.wxml的template標(biāo)簽 -->
<template is="outside"></template>
結(jié)果圖

name="outside"的那個(gè)template呢?別急绰精,看看開發(fā)者工具提示的信息



結(jié)果發(fā)現(xiàn)撒璧,template并沒有引入進(jìn)去,除此之外的代碼都被引入了笨使。

此外卿樱,include支持嵌套引入,比如a include b硫椰,b include c繁调,那么相當(dāng)于把c.wxml中除了template以外的代碼復(fù)制到了b中,再把b中除了template以外的代碼復(fù)制到了a中

<!-- c.wxml -->
<view>c</view>
<!-- b.wxml -->
<include src="c.wxml" />
<view>b</view>
<!-- a.wxml -->
<view>a</view>
<include src="b.wxml"></include>
預(yù)覽圖

此時(shí)a.wxml相當(dāng)于

<!-- a.wxml -->
<view>a</view>
<view>c</view>
<view>b</view>

2靶草、component

通過使用template蹄胰,可以很方便的在多處復(fù)用同一段代碼,但是template竟然只有wxml和wxss文件奕翔,在多處復(fù)用時(shí)裕寨,如果涉及到交互,豈不是要在多處寫同一段js代碼派继?那template有個(gè)[嘩]用氨鐾唷?驾窟!我&&%庆猫!…@!…&¥%#



嗯绅络?什么月培?component有自己的js文件?可以解決這個(gè)問題恩急?


2.1 使用component

要使用component节视,首先在component的文件夾內(nèi),右鍵——新建——component假栓,然后會(huì)出現(xiàn)四個(gè)文件(wxml、wxss霍掺、js匾荆、json)


當(dāng)寫好了這個(gè)component組件后拌蜘,然后在要使用這個(gè)組件的json文件中指明component的路徑,比如我要在classic頁面中使用這個(gè)組件:

// classic.json
{
  "usingComponents": {
    "music": "/components/classic/music/index"   // 此處的music是組件名牙丽,可隨意更改
  }
}

然后在classic.wxml文件中以標(biāo)簽的方式使用該組件(標(biāo)簽名是我們上面在json文件中自定義的組件名)

<!-- classic.wxml -->
<music />
預(yù)覽圖

總結(jié)

1简卧、對(duì)于不涉及js邏輯交互的簡單展示,可以考慮使用template烤芦。
2举娩、對(duì)于js邏輯交互多的組件,使用component构罗。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末铜涉,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子遂唧,更是在濱河造成了極大的恐慌芙代,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,734評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件盖彭,死亡現(xiàn)場離奇詭異纹烹,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)召边,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門铺呵,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人隧熙,你說我怎么就攤上這事片挂。” “怎么了贱鼻?”我有些...
    開封第一講書人閱讀 164,133評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵宴卖,是天一觀的道長。 經(jīng)常有香客問我邻悬,道長症昏,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,532評(píng)論 1 293
  • 正文 為了忘掉前任父丰,我火速辦了婚禮肝谭,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘蛾扇。我一直安慰自己攘烛,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,585評(píng)論 6 392
  • 文/花漫 我一把揭開白布镀首。 她就那樣靜靜地躺著坟漱,像睡著了一般。 火紅的嫁衣襯著肌膚如雪更哄。 梳的紋絲不亂的頭發(fā)上芋齿,一...
    開封第一講書人閱讀 51,462評(píng)論 1 302
  • 那天腥寇,我揣著相機(jī)與錄音,去河邊找鬼觅捆。 笑死赦役,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的栅炒。 我是一名探鬼主播掂摔,決...
    沈念sama閱讀 40,262評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼赢赊!你這毒婦竟也來了乙漓?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,153評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤域携,失蹤者是張志新(化名)和其女友劉穎簇秒,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體秀鞭,經(jīng)...
    沈念sama閱讀 45,587評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡趋观,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,792評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了锋边。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片皱坛。...
    茶點(diǎn)故事閱讀 39,919評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖豆巨,靈堂內(nèi)的尸體忽然破棺而出剩辟,到底是詐尸還是另有隱情,我是刑警寧澤往扔,帶...
    沈念sama閱讀 35,635評(píng)論 5 345
  • 正文 年R本政府宣布贩猎,位于F島的核電站,受9級(jí)特大地震影響萍膛,放射性物質(zhì)發(fā)生泄漏吭服。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,237評(píng)論 3 329
  • 文/蒙蒙 一蝗罗、第九天 我趴在偏房一處隱蔽的房頂上張望艇棕。 院中可真熱鬧,春花似錦串塑、人聲如沸沼琉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽打瘪。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間瑟慈,已是汗流浹背桃移。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留葛碧,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,048評(píng)論 3 370
  • 正文 我出身青樓过吻,卻偏偏與公主長得像进泼,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子纤虽,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,864評(píng)論 2 354

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