在閱讀微信小程序開發文檔時,作了些筆記以下。web
一個小程序頁面由四個組件組成json
文件類型 | 必填 | 做用 |
is | 是 | 頁面邏輯 |
wxml | 是 | 頁面結構 |
wxss | 否 | 頁面樣式 |
json | 否 | 頁面配置 |
wxml 是展現層,js 爲邏輯層。wxml 中的動態數據均來自對應 js 文件中 Page 的data。小程序
例如微信小程序
<!-- sample.wxml--> <view> {{msg}} </view>
//sample.js Page({ data : { msg : 'hello world' } })
tabBar 位於小程序頁面的底部。只有一個 tab 的小程序,tabBar 不顯示,有多個 tab 的應用 tabBar 才顯示,用於切換頁面。例子以下數組
// app.json
{ "pages":[ "pages/index/index", "pages/logs/logs", "pages/message/message" ] "tabBar" : { "list" : [{ "pagePath" : "pages/index/index", "text" : "home" },{ "pagePath" : "pages/log/log", "text" : "Log" },{ "pagePath" : "pages/message/message", "text" : "Message" } ], "color" : "#999", "selectedColor" : "#258" } }
在 wxml 中觸發事件後,微信框架在對應的 js 文件中找對應的函數進行處理。例子以下微信
<!-- evantHandler.wxml --> <view bindtap="click_event"> click me </view>
// eventHandler.js Page({ click_event : function(){ console.log("clicked"); } })
在 JavaScript 文件中聲明的變量和函數只在當前文件中有效。app
能夠將公共的代碼抽離成爲一個單獨的 js 文件,做爲一個模塊,經過 module.exports 對外暴露接口。在其餘文件中,使用 require(path)
將公共代碼引入。框架
// common.js function sayHi(name){ console.log('Hi, ' + name); } module.exports = { sayHi : sayHi }
引入公用文件 common.js 的代碼xss
var common = require('common.js') Page({ click_event : function(){ common.sayHi('Tony') } })
組件是頁面的基本組成單元,例如視圖容器的 view, 基礎內容的 text, 表單的 button 等,完整列表。模塊化
注意,<block /> 能夠來包含一組組件,可是 <block/> 並非一個組件,它僅僅是一個包裝元素,不會在頁面中作任何渲染,只接受控制屬性。例子以下
<block wx:if="{{true}}"> <view> view1 </view> <view> view2 </view> </block>
列表渲染通常採用 wx:for 控制屬性綁定一個數組來實現。默認的當前下標爲 index, 默認的當前元素爲 item
<view wx:for="{{items}}"> {{index}}: {{item.message}} </view>
Page({ data: { items: [{ message: 'foo', }, { message: 'bar' }] } })
使用 wx:for-index 能夠指定當前下標名,使用 wx:for-item 能夠指定當前元素名。例如
<view wx:for="{{array}}" wx:for-index="idx" wx:for-item="itemName"> {{idx}}: {{itemName.message}} </view>
import 能夠在當前文件中使用目標文件定義的 template
在 item.wxml 中定義了一個 item 的 template
<!-- item.wxml --> <template name="item"> <text>{{text}}</text> </template>
在 index.wxml 中引用 item.wxml,就能夠使用 item 的模板
<import src="item.wxml"/> <template is="item" data="{{text: 'forbar'}}"/>
import 不支持鏈式效果
即只會 import 目標文件中定義的 template,而不會 import 目標文件 import 的 template。
如:C import B,B import A,在C中能夠使用B定義的template,在B中能夠使用A定義的template,可是C不能使用A定義的template。
微信小程序採用 WXSS(WeiXin Style Sheets) 樣式語言,用於描述組件樣式,相似 CSS 在網頁的功能
在 app.wxss 中定義的樣式爲全局樣式,做用於每個頁面。在 page 的 wxss 文件中定義的樣式爲局部樣式,只做用在對應的頁面,並會覆蓋 app.wxss 中相同的選擇器。
簡單測試了微信web開發者工具發現,json 文件的數據變動能直接生效,.wxml .js .wxss 文件的變更須要重啓小程序才能生效。
參考資料: