一般來說會(huì)包含以下4中類型的文件:
-
.json
后綴的JSON
配置文件 -
.wxml
后綴的WXML
模板文件 -
.wxss
后綴的WXSS
樣式文件 -
.js
后綴的JS
腳本邏輯文件
一:JSON 是一種數(shù)據(jù)格式,并不是編程語言,在小程序中,JSON扮演的靜態(tài)配置的角色。(例如:app.json 是當(dāng)前小程序的全局配置,包括了小程序的所有頁面路徑、界面表現(xiàn)、網(wǎng)絡(luò)超時(shí)時(shí)間、底部 tab 等。)
這里說一下小程序里JSON配置的一些注意事項(xiàng)。
JSON文件都是被包裹在一個(gè)大括號(hào)中 {},通過key-value的方式來表達(dá)數(shù)據(jù)。JSON的Key必須包裹在一個(gè)雙引號(hào)中,在實(shí)踐中,編寫 JSON 的時(shí)候,忘了給 Key 值加雙引號(hào)或者是把雙引號(hào)寫成單引號(hào)是常見錯(cuò)誤。
JSON的值只能是以下幾種數(shù)據(jù)格式,其他任何格式都會(huì)觸發(fā)報(bào)錯(cuò),例如 JavaScript 中的 undefined。
- 數(shù)字,包含浮點(diǎn)數(shù)和整數(shù)
- 字符串,需要包裹在雙引號(hào)中
- Bool值,true 或者 false
- 數(shù)組,需要包裹在方括號(hào)中 []
- 對象,需要包裹在大括號(hào)中 {}
- Null
還需要注意的是 JSON 文件中無法使用注釋,試圖添加注釋將會(huì)引發(fā)報(bào)錯(cuò)。
二:WXML模板文件充當(dāng)萬網(wǎng)頁編程中類似 HTML 的角色,其中小程序的 WXML 用的標(biāo)簽是 view, button, text 等等。React, Vue),小程序提倡把渲染和邏輯分離。簡單來說就是不要再讓 JS 直接操控 DOM,JS 只需要管理狀態(tài)即可,然后再通過一種模板語法來描述狀態(tài)和界面結(jié)構(gòu)的關(guān)系即可,例如:目前最流行的前端開發(fā)React和Vue框架。小程序的框架也是用到了這個(gè)思路。
在WXML模板中都是通過 {{ }} 的語法把一個(gè)變量綁定到界面上,我們稱為數(shù)據(jù)綁定。要完整的描述狀態(tài)和界面的關(guān)系,還需要 if/else, for等控制能力,在小程序里,這些控制能力都用 wx: 開頭的屬性來表達(dá)。
三:WXSS
樣式文件 具有 CSS
大部分的特性,小程序在 WXSS
也做了一些擴(kuò)充和修改。
-
新增了尺寸單位。在寫
CSS
樣式時(shí),開發(fā)者需要考慮到手機(jī)設(shè)備的屏幕會(huì)有不同的寬度和設(shè)備像素比,采用一些技巧來換算一些像素單位。WXSS
在底層支持新的尺寸單位rpx
,開發(fā)者可以免去換算的煩惱,只要交給小程序底層來換算即可,由于換算采用的浮點(diǎn)數(shù)運(yùn)算,所以運(yùn)算結(jié)果會(huì)和預(yù)期結(jié)果有一點(diǎn)點(diǎn)偏差。 -
提供了全局的樣式和局部樣式。和前邊
app.json
,page.json
的概念相同,你可以寫一個(gè)app.wxss
作為全局樣式,會(huì)作用于當(dāng)前小程序的所有頁面,局部頁面樣式page.wxss
僅對當(dāng)前頁面生效。 -
此外
WXSS
僅支持部分CSS
選擇器。
<view>{{ msg }}view> <button bindtap="clickMe">點(diǎn)擊我button>
點(diǎn)擊 button
按鈕的時(shí)候,我們希望把界面上 msg
顯示成 "Hello World"
,于是我們在 button
上聲明一個(gè)屬性: bindtap
,在 JS 文件里邊聲明了 clickMe
方法來響應(yīng)這次點(diǎn)擊操作:
Page({ clickMe: function() { this.setData({ msg: "Hello World" }) } })
響應(yīng)用戶的操作就是這么簡單,更詳細(xì)的事件可以參考文檔 WXML - 事件 。
此外你還可以在 JS 中調(diào)用小程序提供的豐富的 API,利用這些 API 可以很方便的調(diào)起微信提供的能力,例如獲取用戶信息、本地存儲(chǔ)、微信支付等。例如可以使用調(diào)用 wx.getUserInfo 獲取微信用戶的頭像和昵稱,最后通過 setData
把獲取到的信息顯示到界面上。