WXML
WXML能力:
- 數據綁定
- 列表渲染
- 條件渲染
- 模板
- 事件
數據綁定
數據綁定使用 Mustache 語法(雙大括號)將變量包起來,可作用於內容,組件屬性(需要在雙引號之內),控制屬性(需要在雙引號之內),關鍵字(需要在雙引號之內),運算,邏輯判斷,字符串運算,數據路徑運算,組合,數組,對象。
詳細內容見:https://developers.weixin.qq.com/miniprogram/dev/framework/view/wxml/data.html
列表渲染
wx:for
在組件上使用 wx:for 控制屬性綁定一個數組,即可使用數組中各項的數據重復渲染該組件。
wx:key
如果列表中項目的位置會動態改變或者有新的項目添加到列表中,並且希望列表中的項目保持自己的特征和狀態(如 <input> 中的輸入內容,<switch>的選中狀態),需要使用 wx:key 來指定列表中項目的唯一的標識符。
wx:key 的值以兩種形式提供
- 字符串,代表在 for 循環的 array 中 item 的某個 property,該 property 的值需要是列表中唯一的字符串或數字,且不能動態改變。
- 保留關鍵字
*this代表在 for 循環中的 item 本身,這種表示需要 item 本身是一個唯一的字符串或者數字,如:
當數據改變觸發渲染層重新渲染的時候,會校正帶有 key 的組件,框架會確保他們被重新排序,而不是重新創建,以確保使組件保持自身的狀態,並且提高列表渲染時的效率
詳細見:https://developers.weixin.qq.com/miniprogram/dev/framework/view/wxml/list.html
條件渲染
- 使用
wx:if="{{condition}}"來判斷是否需要渲染該代碼塊 -
用
wx:elif和wx:else來添加一個 else 塊 -
如果要一次性判斷多個組件標簽,可以使用一個
<block/>標簽將多個組件包裝起來,並在上邊使用wx:if控制屬性。 -
wx:if 在隱藏的時候不渲染,而 hidden 在隱藏時仍然渲染,只是不呈現。
詳細見: https://developers.weixin.qq.com/miniprogram/dev/framework/view/wxml/conditional.html
模板
<template>可以在模板中定義代碼片段,然后在不同的地方調用。
- 使用name屬性作為模板名字
- 使用is屬性,聲明需要的使用的模板,然后將模板所需要的data傳入
詳細見:https://developers.weixin.qq.com/miniprogram/dev/framework/view/wxml/template.html
**事件**
不再贅述,詳細見:https://developers.weixin.qq.com/miniprogram/dev/framework/view/wxml/event.html
冒泡事件與非冒泡事件區別:是否向父節點傳遞,也就是說子節點觸發事件,父節點也能接收的是冒泡事件
事件綁定和冒泡:bind事件綁定不會阻止冒泡事件向上冒泡,catch事件綁定可以阻止冒泡事件向上冒泡。
引用
通過import和include來引用文件。注意作用域。
- C import B,B import A,在C中可以使用B定義的
template,在B中可以使用A定義的template,但是C不能使用A定義的template。 include可以將目標文件除了<template/><wxs/>外的整個代碼引入,相當於是拷貝到include位置
詳細見:https://developers.weixin.qq.com/miniprogram/dev/framework/view/wxml/import.html
WXSS
WXSS 具有 CSS 大部分特性。同時為了更適合開發微信小程序,WXSS 對 CSS 進行了擴充以及修改。與 CSS 相比,WXSS 擴展的特性有:尺寸單位,樣式導入
詳細見:https://developers.weixin.qq.com/miniprogram/dev/framework/view/wxss.html
WXS
WXS(WeiXin Script)是小程序的一套腳本語言,結合 WXML,可以構建出頁面的結構。
注意
- wxs 不依賴於運行時的基礎庫版本,可以在所有版本的小程序中運行。
- wxs 與 javascript 是不同的語言,有自己的語法,並不和 javascript 一致。
- wxs 的運行環境和其他 javascript 代碼是隔離的,wxs 中不能調用其他 javascript 文件中定義的函數,也不能調用小程序提供的API。
- wxs 函數不能作為組件的事件回調。
- 由於運行環境的差異,在 iOS 設備上小程序內的 wxs 會比 javascript 代碼快 2 ~ 20 倍。在 android 設備上二者運行效率無差異
詳細見:https://www.w3cschool.cn/weixinapp/weixinapp-t71j2czl.html
