微信小程序開發 [04] 模板和模塊化



1、模板

如果相同的wxml代碼可能在不同的頁面重復使用,ctrl+c配合ctrl+v的方式,后期維護起來未免也太麻煩了。微信提供了“模板”,可以在模板中定義代碼片段,然后在不同的地方調用。

使用 <template> 對代碼進行模板定義,並使用name屬性為模板進行命名,如:
<template name="msgItem"> 
  <view>
    <text> {{index}}: {{msg}} </text>
    <text> Time: {{time}} </text>
  </view>
</template>

而在需要使用模板的地方,首先需要 引用模板文件,通過import關鍵字,可以在文件中使用引用文件中定義的template,如:

<import src="item.wxml"/>

而使用的話,同樣是  <template> ,但使用其 is 屬性進行聲明使用,並將模板需要的數據傳入。如:

<import src="item.wxml"/>
<template is="msgItem" data="{{...item}}"/>

來實際操作一下,我們接着之前的章節,現在把welcome頁面中的代碼片段 <text>Welcome,{{nickname}}!{{number}}</text> 抽離為模板:
  • 在pages文件夾下,新建文件夾template,並新建一個wxml文件命名為welcome-template.wxml
  • 按照模板的定義方式,定義模板內容
 
然后,我們到welcome.wxml中引用name為welcome的模板:
 
注:這里的 ... 是wxml中提供的一個擴展運算符,表示將一個對象展開,這樣一來在模板中本需要使用pageData.nickname的形式,現在只需要寫nickname即可。

可以看到,這里傳入的數據參數名為pageData,那么我們在welcome.js中的data也需要修改為json對象的形式:
 
我們看到效果和之前直接寫是一樣的:
 

2、模塊化

在微信小程序中,可以將一些公共的代碼抽離為一個單獨的js文件,作為一個模塊,而在其它需要使用的頁面,對該js文件進行引用。 而模塊的內容只能通過 module.exports 來對外暴露接口。而在需要使用的地方,使用關鍵字 require(path) 進行引入。

值得注意的是,因為代碼執行順序的緣故,盡量把module.exports放在文件的最后。自己踩過的一個坑就是,曾把它放在第一行,結果引出的變量為undefined。

之前我們的變量nickname是寫在welcome.js中的,現在我們把它抽離到其他js文件中,來示范一下“模塊化”。

首先建立一個根目錄命名為“modules”,在其下新建一個js文件data.js:
 
在js中可以定義變量或者函數,我們簡單寫一下,然后使用 module.exports 來暴露接口以供外界調用:
 
原來在welcome.js的onLoad函數中,我們的nickname是直接賦值的字符串,現在我們要引用模塊文件data.js中的nickname,或者getNickname:
 
編譯一下查看效果,妥妥的:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM