做(zuò)自(zì)由與創造的先行(xíng)者

WXML 模闆

小程序開(kāi)發手冊

從(cóng)事過網頁編程的人(rén)知道(dào),網頁編程采用的是 HTML + CSS + JS 這(zhè)樣的組合,其中 HTML 是用來描述當前這(zhè)個頁面的結構,CSS 用來描述頁面的樣子,JS 通(tōng)常是用來處理這(zhè)個頁面和(hé)用戶的交互。

同樣道(dào)理,在小程序中也有同樣的角色,其中 WXML 充當的就是類似 HTML 的角色。打開(kāi) pages/index/index.wxml,你會看(kàn)到以下(xià)的內(nèi)容:

{{userInfo.nickName}}

{{motto}}

和(hé) HTML 非常相似,WXML 由标簽、屬性等等構成。但(dàn)是也有很(hěn)多不一(yī)樣的地(dì)方,我們來一(yī)一(yī)闡述一(yī)下(xià):

标簽名字有點不一(yī)樣

往往寫 HTML 的時(shí)候,經常會用到的标簽是 div, p, span,開(kāi)發者在寫一(yī)個頁面的時(shí)候可(kě)以根據這(zhè)些基礎的标簽組合出不一(yī)樣的組件,例如(rú)日曆、彈窗等等。換個思路,既然大家都(dōu)需要(yào)這(zhè)些組件,為(wèi)什麽我們不能(néng)把這(zhè)些常用的組件包裝起來,大大提高我們的開(kāi)發效率。

從(cóng)上(shàng)邊的例子可(kě)以看(kàn)到,小程序的 WXML 用的标簽是 view, button, text 等等,這(zhè)些标簽就是小程序給開(kāi)發者包裝好的基本能(néng)力,我們還提供了(le)地(dì)圖、視(shì)頻(pín)、音頻(pín)等等組件能(néng)力。

更多詳細的組件講述參考下(xià)個章(zhāng)節 小程序的能(néng)力

多了(le)一(yī)些 wx:if 這(zhè)樣的屬性以及 {{ }} 這(zhè)樣的表達式

在網頁的一(yī)般開(kāi)發流程中,我們通(tōng)常會通(tōng)過 JS 操作(zuò) DOM (對應 HTML 的描述産生的樹(shù)),以引起界面的一(yī)些變化響應用戶的行(xíng)為(wèi)。例如(rú),用戶點擊某個按鈕的時(shí)候,JS 會記錄一(yī)些狀态到 JS 變量裏邊,同時(shí)通(tōng)過 DOM API 操控 DOM 的屬性或者行(xíng)為(wèi),進而引起界面一(yī)些變化。當項目越來越大的時(shí)候,你的代碼會充斥着非常多的界面交互邏輯和(hé)程序的各種狀态變量,顯然這(zhè)不是一(yī)個很(hěn)好的開(kāi)發模式,因此就有了(le) MVVM 的開(kāi)發模式(例如(rú) React, Vue),提倡把渲染和(hé)邏輯分離。簡單來說就是不要(yào)再讓 JS 直接操控 DOM,JS 隻需要(yào)管理狀态即可(kě),然後再通(tōng)過一(yī)種模闆語法來描述狀态和(hé)界面結構的關系即可(kě)。

小程序的框架也是用到了(le)這(zhè)個思路,如(rú)果你需要(yào)把一(yī)個 Hello World 的字符串顯示在界面上(shàng)。

WXML 是這(zhè)麽寫 :

{{msg}}

JS 隻需要(yào)管理狀态即可(kě):

this.setData({ msg: "Hello World" })

通(tōng)過 {{ }} 的語法把一(yī)個變量綁定到界面上(shàng),我們稱為(wèi)數(shù)據綁定。僅僅通(tōng)過數(shù)據綁定還不夠完整的描述狀态和(hé)界面的關系,還需要(yào) if/else, for等控制能(néng)力,在小程序裏邊,這(zhè)些控制能(néng)力都(dōu)用 wx: 開(kāi)頭的屬性來表達。

網站建設開(kāi)發|APP設計開(kāi)發|小程序建設開(kāi)發
下(xià)一(yī)篇:WXSS 樣式
上(shàng)一(yī)篇:JSON 配置