小程序開發(fā)框架的目標(biāo)是通過盡可能簡單、高效的方式讓開發(fā)者可以在微信中開發(fā)具有原生 APP 體驗的服務(wù)。例如你要蓋房子,如果沒有任何人指導(dǎo)幫助你,你需要一磚一瓦的從地上開始累積,而且還不能夠保證房子是否結(jié)實。而此時,框架的作用就好像是有一位建筑設(shè)計大師,他告訴你蓋房子首先需要打牢地基,布設(shè)承重柱、承重墻,房梁應(yīng)該建在什么地方,同時還給你把每間屋子的作用規(guī)劃好,最后竟然把這些都親手給你實現(xiàn),而你要做的只是拿著建筑材料去把地基、每一面墻、房頂?shù)刃枰钛a(bǔ)的磚瓦給補(bǔ)上即可。同理,接下來你要學(xué)習(xí)的小程序框架就幫你從邏輯層和視圖層兩個層面開發(fā)小程序,你要做的就是分別開發(fā)這兩個層面的代碼即可,其他的交給微信處理。下面跟我一起來搭建開發(fā)小程序的框架吧。
搭建小程序框架:舉例
第1章 簡單例子剖析
整個小程序框架系統(tǒng)分為兩部分:邏輯層(App Service)和 視圖層(View)。小程序提供了自己的視圖層描述語言 WXML 和 WXSS,以及基于 JavaScript 的邏輯層框架,并在視圖層與邏輯層間提供了數(shù)據(jù)傳輸和事件系統(tǒng),讓開發(fā)者能夠?qū)W⒂跀?shù)據(jù)與邏輯。
框架的核心是一個響應(yīng)的數(shù)據(jù)綁定系統(tǒng),可以讓數(shù)據(jù)與視圖非常簡單地保持同步。當(dāng)做數(shù)據(jù)修改的時候,只需要在邏輯層修改數(shù)據(jù),視圖層就會做相應(yīng)的更新。通過這個簡單的例子來看:

開發(fā)者通過框架將邏輯層數(shù)據(jù)中的 name 與視圖層的 name 進(jìn)行了綁定,所以在頁面一打開的時候會顯示 Hello WeChat!;當(dāng)點擊按鈕的時候,視圖層會發(fā)送 changeName 的事件(什么是事件我們稍后詳解)給邏輯層,邏輯層找到并執(zhí)行對應(yīng)的事件處理函數(shù);回調(diào)函數(shù)(請讀者到公眾號的“教你使用開發(fā)工具”部分查看詳解)觸發(fā)后,邏輯層執(zhí)行 setData 的操作,將 data 中的 name 從 WeChat 變?yōu)?MINA,因為該數(shù)據(jù)和視圖層已經(jīng)綁定了,從而視圖層會自動改變?yōu)?Hello MINA!。
通過上邊的例子讀者已經(jīng)對小程序的開發(fā)框架有了初步的了解,下邊再介紹一下框架的其他考慮
1、頁面管理
框架管理了整個小程序的頁面路由,可以做到頁面間的無縫切換,并給以頁面完整的生命周期。開發(fā)者需要做的只是將頁面的數(shù)據(jù)、方法、生命周期函數(shù)注冊到框架中,其他的一切復(fù)雜的操作都交由框架處理。
2、基礎(chǔ)組件
框架提供了一套基礎(chǔ)的組件,這些組件自帶微信風(fēng)格的樣式以及特殊的邏輯,開發(fā)者可以通過組合基礎(chǔ)組件,創(chuàng)建出強(qiáng)大的微信小程序 。
3、豐富的API
框架提供豐富的微信原生 API,可以方便的使用微信提供的能力,如獲取用戶信息,本地存儲,支付功能等。
搭建小程序框架:場景值
第2章 知曉場景值
這一章我們先來介紹下微信的場景值,場景值用來描述用戶進(jìn)入小程序的路徑。這里直接拿個實際的例子吧,場景值的意義讀者自己可以體會。
案例分析:
將一個小程序通過“添加到我的小程序”操作,然后從微信聊天窗口下拉打開這個新添加的小程序即可領(lǐng)取優(yōu)惠券。
這個操作的業(yè)務(wù)邏輯是首先判斷用戶收藏小程序,然后再給予優(yōu)惠券獎勵。知道了業(yè)務(wù)邏輯,這時候你就可以去查詢小程序是否有判斷用戶收藏了小程序的場景值(不過并沒有,只有一個通過微信下拉小程序進(jìn)入的場景1089),經(jīng)過分析我們確定了要使用的場景值是1089,即通過判斷用戶是通過微信下來進(jìn)入小程序即可,然后進(jìn)入程序獲得優(yōu)惠券。
代碼部分很簡單,只需要在app.js的onlaunch(onlaunch方法是當(dāng)小程序加載完畢后就執(zhí)行的方法)中判斷場景值(記得onlaunch要加options)
options.scene就是對應(yīng)的場景值邏輯代碼如下:

補(bǔ)充:
官方文檔寫道由于Android系統(tǒng)限制,目前還無法獲取到按 Home 鍵退出到桌面,然后從桌面再次進(jìn)小程序的場景值,對于這種情況,會保留上一次的場景值。(不過我感覺現(xiàn)在已經(jīng)解決了,你退回手機(jī)桌面之后,在后臺是可以直接再次點擊直接進(jìn)入小程序的)
(如果有人覺得分享值得,可以在后臺留言,看到后我會繼續(xù)更新下去)