一、app的分類
大致可以分為這3種:
native app(原生app)、web app、hybrid app(混合app),關(guān)系如下圖:
二、什么是小程序
小程序是介于web網(wǎng)頁應(yīng)用和原生應(yīng)用的一種產(chǎn)物;
小程序的特點(diǎn):
三、小程序架構(gòu)
視圖層和邏輯層分離,通過數(shù)據(jù)驅(qū)動(dòng),事件交互,不直接操作DOM
視圖層負(fù)責(zé)渲染頁面結(jié)構(gòu),邏輯層負(fù)責(zé)邏輯處理、數(shù)據(jù)請求、接口調(diào)用等
視圖層與邏輯層通過數(shù)據(jù)和事件進(jìn)行通信,邏輯層提供數(shù)據(jù)給視圖層,視圖層通過綁定/捕獲事件發(fā)起交互讓邏輯層處理
視圖使用WebView
渲染,JS由JSCore(IOS)/X5(Android)/nmjs(DevTool)
渲染解析
JSBridge下架起上層開發(fā)與Native(系統(tǒng)層)的橋梁,使得小程序可通過API使用原生的功能,且部分組件為原生組件實(shí)現(xiàn),從而有良好體驗(yàn)。實(shí)現(xiàn)了對底層API接口的調(diào)用,所以在小程序里面開發(fā),開發(fā)者不用太多去考慮OS的實(shí)現(xiàn)差異的問題,安心在上層的視圖層和邏輯層進(jìn)行開發(fā)即可。
數(shù)據(jù)通信機(jī)制:
分為數(shù)據(jù)單項(xiàng)綁定、事件綁定。
四、小程序項(xiàng)目結(jié)構(gòu)
約定優(yōu)于配置(convention over configuration),也稱作按約定編程,是一種軟件設(shè)計(jì)范式,旨在減少軟件開發(fā)人員需做決定的數(shù)量,獲得簡單的好處,而又不失靈活性。
五、小程序生命周期
小程序的生命周期分為應(yīng)用生命周期和頁面生命周期
應(yīng)用生命周期:
屬性 | 類型 | 描述 | 觸發(fā)時(shí)機(jī) |
---|---|---|---|
onLaunch | Function | 生命周期函數(shù)--監(jiān)聽小程序初始化 | 當(dāng)小程序初始化完成時(shí),會(huì)觸發(fā) onLaunch(全局只觸發(fā)一次) |
onShow | Function | 生命周期函數(shù)--監(jiān)聽小程序顯示 | 當(dāng)小程序啟動(dòng),或從后臺(tái)進(jìn)入前臺(tái)顯示,會(huì)觸發(fā) onShow |
onHide | Function | 生命周期函數(shù)--監(jiān)聽小程序隱藏 | 當(dāng)小程序從前臺(tái)進(jìn)入后臺(tái),會(huì)觸發(fā) onHide |
Page()函數(shù)用來注冊一個(gè)頁面。接受一個(gè) object 參數(shù),其指定頁面的初始數(shù)據(jù)、生命周期函數(shù)、事件處理函數(shù)等。
object 參數(shù)說明:
屬性 | 類型 | 描述 |
---|---|---|
data | Object | 頁面的初始數(shù)據(jù) |
onLoad | Function | 生命周期函數(shù)--監(jiān)聽頁面加載 |
onReady | Function | 生命周期函數(shù)--監(jiān)聽頁面初次渲染完成 |
onShow | Function | 生命周期函數(shù)--監(jiān)聽頁面顯示 |
onHide | Function | 生命周期函數(shù)--監(jiān)聽頁面隱藏 |
onUnload | Function | 生命周期函數(shù)--監(jiān)聽頁面卸載 |
用Page 實(shí)例說明的頁面的生命周期
由上圖可知,小程序由兩大線程組成:負(fù)責(zé)界面的視圖線程(view thread)和負(fù)責(zé)數(shù)據(jù)、服務(wù)處理的服務(wù)線程(appservice thread),兩者協(xié)同工作,完成小程序頁面生命周期的調(diào)用。
視圖線程有四大狀態(tài):
服務(wù)線程五大狀態(tài):
六、啟動(dòng)方式
小程序啟動(dòng)會(huì)有兩種情況,一種是「冷啟動(dòng)」,一種是「熱啟動(dòng)」。 假如用戶已經(jīng)打開過某小程序,然后在一定時(shí)間內(nèi)再次打開該小程序,此時(shí)無需重新啟動(dòng),只需將后臺(tái)態(tài)的小程序切換到前臺(tái),這個(gè)過程就是熱啟動(dòng);冷啟動(dòng)指的是用戶首次打開或小程序被微信主動(dòng)銷毀后再次打開的情況,此時(shí)小程序需要重新加載啟動(dòng)。
小程序冷啟動(dòng)時(shí)如果發(fā)現(xiàn)有新版本,將會(huì)異步下載新版本的代碼包,并同時(shí)用客戶端本地的包進(jìn)行啟動(dòng),即新版本的小程序需要等下一次冷啟動(dòng)才會(huì)應(yīng)用上。 如果需要馬上應(yīng)用最新版本,可以使用 wx.getUpdateManager API 進(jìn)行處理。