框架
小程序開發(fā)框架的目標(biāo)是通過盡可能簡單、高效的方式讓開發(fā)者可以在微信中開發(fā)具有原生APP體驗(yàn)的服務(wù)。
框架提供了自己的視圖層描述語言WXML和WXSS,以及基于JavaScript的邏輯層框架,并在視圖層與邏輯層間提供了數(shù)據(jù)傳輸和事件系統(tǒng),可以讓開發(fā)者可以方便的聚焦于數(shù)據(jù)與邏輯上。
響應(yīng)的數(shù)據(jù)綁定
框架的核心是一個(gè)響應(yīng)的數(shù)據(jù)綁定系統(tǒng)。
整個(gè)系統(tǒng)分為兩塊視圖層(View)和邏輯層(App Service)
框架可以讓數(shù)據(jù)與視圖非常簡單地保持同步。當(dāng)做數(shù)據(jù)修改的時(shí)候,只需要在邏輯層修改數(shù)據(jù),視圖層就會(huì)做相應(yīng)的更新。
通過這個(gè)簡單的例子來看:
<!-- Thie is our View -->
<view> Hello {{name}}! </view>
<button bindtap="changeName"> Click me! </button>
// This is our App Service.
// This is our data.
var helloData = {
name: 'WeChat'
}
// Register a Page.
Page({
data: helloData,
changeName: function(e) {
// sent data change to view.
this.setData({
name: 'MINA'
})
}
})
- 開發(fā)者通過框架將邏輯層數(shù)據(jù)中的
name與視圖層的name進(jìn)行了綁定,所以在頁面一打開的時(shí)候會(huì)顯示Hello WeChat! - 當(dāng)點(diǎn)擊按鈕的時(shí)候,視圖層會(huì)發(fā)送
changeName的事件給邏輯層,邏輯層找到對(duì)應(yīng)的事件處理函數(shù) - 邏輯層執(zhí)行了
setData的操作,將name從weChat變?yōu)?code style="margin: 0px 5px; padding: 0px 4px; display: inline-block; background-color: rgb(249, 242, 244); border-radius: 3px; color: rgb(199, 37, 78); font-family: Consolas, "Courier New", Courier, monospace;">MINA,因?yàn)樵摂?shù)據(jù)和視圖層已經(jīng)綁定了,從而視圖層會(huì)自動(dòng)響應(yīng)改變?yōu)?code style="margin: 0px 5px; padding: 0px 4px; display: inline-block; background-color: rgb(249, 242, 244); border-radius: 3px; color: rgb(199, 37, 78); font-family: Consolas, "Courier New", Courier, monospace;">Hello MINA! 。
框架管理了整個(gè)小程序的頁面路由,可以做到頁面間的無縫切換,并給以頁面完整的生命周期。開發(fā)者需要做的只是將頁面的數(shù)據(jù),方法,生命周期函數(shù)注冊(cè)進(jìn)框架中,其他的一切復(fù)雜的操作都交由框架處理。
框架提供了一套基礎(chǔ)的組件,這些組件自帶微信風(fēng)格的樣式以及特殊的邏輯,開發(fā)者可以通過組合基礎(chǔ)組件,創(chuàng)建出強(qiáng)大的微信小程序 。
框架提供豐富的微信原生API,可以方便的調(diào)起微信提供的能力,如獲取用戶信息,本地存儲(chǔ),支付功能等。