
小程序開(kāi)發(fā)框架的目標(biāo)是通過(guò)盡可能簡(jiǎn)單、高效的方式讓開(kāi)發(fā)者可以在微信中開(kāi)發(fā)具有原生 APP 體驗(yàn)的服務(wù)。例如你要蓋房子,如果沒(méi)有任何人指導(dǎo)幫助你,你需要一磚一瓦的從地上開(kāi)始累積,而且還不能夠保證房子是否結(jié)實(shí)。而此時(shí),框架的作用就好像是有一位建筑設(shè)計(jì)大師,他告訴你蓋房子首先需要打牢地基,布設(shè)承重柱、承重墻,房梁應(yīng)該建在什么地方,同時(shí)還給你把每間屋子的作用規(guī)劃好,最后竟然把這些都親手給你實(shí)現(xiàn),而你要做的只是拿著建筑材料去把地基、每一面墻、房頂?shù)刃枰钛a(bǔ)的磚瓦給補(bǔ)上即可。同理,接下來(lái)你要學(xué)習(xí)的小程序框架就幫你從邏輯層和視圖層兩個(gè)層面開(kāi)發(fā)小程序,你要做的就是分別開(kāi)發(fā)這兩個(gè)層面的代碼即可,其他的交給微信處理。下面跟我一起來(lái)搭建開(kāi)發(fā)小程序的框架吧。
搭建小程序框架:舉例
第1章 簡(jiǎn)單例子剖析
整個(gè)小程序框架系統(tǒng)分為兩部分:邏輯層(App Service)和 視圖層(View)。小程序提供了自己的視圖層描述語(yǔ)言 WXML 和 WXSS,以及基于 JavaScript 的邏輯層框架,并在視圖層與邏輯層間提供了數(shù)據(jù)傳輸和事件系統(tǒng),讓開(kāi)發(fā)者能夠?qū)W⒂跀?shù)據(jù)與邏輯。
框架的核心是一個(gè)響應(yīng)的數(shù)據(jù)綁定系統(tǒng),可以讓數(shù)據(jù)與視圖非常簡(jiǎn)單地保持同步。當(dāng)做數(shù)據(jù)修改的時(shí)候,只需要在邏輯層修改數(shù)據(jù),視圖層就會(huì)做相應(yīng)的更新。通過(guò)這個(gè)簡(jiǎn)單的例子來(lái)看:
開(kāi)發(fā)者通過(guò)框架將邏輯層數(shù)據(jù)中的 name 與視圖層的 name 進(jìn)行了綁定,所以在頁(yè)面一打開(kāi)的時(shí)候會(huì)顯示 Hello WeChat!;當(dāng)點(diǎn)擊按鈕的時(shí)候,視圖層會(huì)發(fā)送 changeName 的事件(什么是事件我們稍后詳解)給邏輯層,邏輯層找到并執(zhí)行對(duì)應(yīng)的事件處理函數(shù);回調(diào)函數(shù)(請(qǐng)讀者到公眾號(hào)的“教你使用開(kāi)發(fā)工具”部分查看詳解)觸發(fā)后,邏輯層執(zhí)行 setData 的操作,將 data 中的 name 從 WeChat 變?yōu)?MINA,因?yàn)樵摂?shù)據(jù)和視圖層已經(jīng)綁定了,從而視圖層會(huì)自動(dòng)改變?yōu)?Hello MINA!。
通過(guò)上邊的例子讀者已經(jīng)對(duì)小程序的開(kāi)發(fā)框架有了初步的了解,下邊再介紹一下框架的其他考慮
1、頁(yè)面管理
框架管理了整個(gè)小程序的頁(yè)面路由,可以做到頁(yè)面間的無(wú)縫切換,并給以頁(yè)面完整的生命周期。開(kāi)發(fā)者需要做的只是將頁(yè)面的數(shù)據(jù)、方法、生命周期函數(shù)注冊(cè)到框架中,其他的一切復(fù)雜的操作都交由框架處理。
2、基礎(chǔ)組件
框架提供了一套基礎(chǔ)的組件,這些組件自帶微信風(fēng)格的樣式以及特殊的邏輯,開(kāi)發(fā)者可以通過(guò)組合基礎(chǔ)組件,創(chuàng)建出強(qiáng)大的微信小程序 。
3、豐富的API
框架提供豐富的微信原生 API,可以方便的使用微信提供的能力,如獲取用戶(hù)信息,本地存儲(chǔ),支付功能等。
搭建小程序框架:場(chǎng)景值
第2章 知曉場(chǎng)景值
這一章我們先來(lái)介紹下微信的場(chǎng)景值,場(chǎng)景值用來(lái)描述用戶(hù)進(jìn)入小程序的路徑。這里直接拿個(gè)實(shí)際的例子吧,場(chǎng)景值的意義讀者自己可以體會(huì)。
案例分析:
將一個(gè)小程序通過(guò)“添加到我的小程序”操作,然后從微信聊天窗口下拉打開(kāi)這個(gè)新添加的小程序即可領(lǐng)取優(yōu)惠券。
這個(gè)操作的業(yè)務(wù)邏輯是首先判斷用戶(hù)收藏小程序,然后再給予優(yōu)惠券獎(jiǎng)勵(lì)。知道了業(yè)務(wù)邏輯,這時(shí)候你就可以去查詢(xún)小程序是否有判斷用戶(hù)收藏了小程序的場(chǎng)景值(不過(guò)并沒(méi)有,只有一個(gè)通過(guò)微信下拉小程序進(jìn)入的場(chǎng)景1089),經(jīng)過(guò)分析我們確定了要使用的場(chǎng)景值是1089,即通過(guò)判斷用戶(hù)是通過(guò)微信下來(lái)進(jìn)入小程序即可,然后進(jìn)入程序獲得優(yōu)惠券。
代碼部分很簡(jiǎn)單,只需要在app.js的onlaunch(onlaunch方法是當(dāng)小程序加載完畢后就執(zhí)行的方法)中判斷場(chǎng)景值(記得onlaunch要加options)
options.scene就是對(duì)應(yīng)的場(chǎng)景值邏輯代碼如下:
補(bǔ)充:
官方文檔寫(xiě)道由于Android系統(tǒng)限制,目前還無(wú)法獲取到按 Home 鍵退出到桌面,然后從桌面再次進(jìn)小程序的場(chǎng)景值,對(duì)于這種情況,會(huì)保留上一次的場(chǎng)景值。(不過(guò)我感覺(jué)現(xiàn)在已經(jīng)解決了,你退回手機(jī)桌面之后,在后臺(tái)是可以直接再次點(diǎn)擊直接進(jìn)入小程序的)
(如果有人覺(jué)得分享值得,可以在后臺(tái)留言,看到后我會(huì)繼續(xù)更新下去)