无码人妻精一区二区三区,eeuss影院www在线观看,无码精品久久久久久人妻中字,日韩av高清在线看片

推薦新聞
小程序架構(gòu)
發(fā)布者:深藍(lán)互聯(lián)
發(fā)布時(shí)間:2019-12-27
點(diǎn)擊:次

一、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)聽頁面卸載
 
  • 小程序注冊完成后,加載頁面,觸發(fā)onLoad方法。
  • 頁面載入后觸發(fā)onShow方法,顯示頁面。
  • 首次顯示頁面,會(huì)觸發(fā)onReady方法,渲染頁面元素和樣式,一個(gè)頁面只會(huì)調(diào)用一次。
  • 當(dāng)小程序后臺(tái)運(yùn)行或跳轉(zhuǎn)到其他頁面時(shí),觸發(fā)onHide方法。
  • 當(dāng)小程序有后臺(tái)進(jìn)入到前臺(tái)運(yùn)行或重新進(jìn)入頁面時(shí),觸發(fā)onShow方法。
  • 當(dāng)使用重定向方法wx.redirectTo(OBJECT)或關(guān)閉當(dāng)前頁返回上一頁wx.navigateBack(),觸發(fā)onUnload。

用Page 實(shí)例說明的頁面的生命周期

由上圖可知,小程序由兩大線程組成:負(fù)責(zé)界面的視圖線程(view thread)和負(fù)責(zé)數(shù)據(jù)、服務(wù)處理的服務(wù)線程(appservice thread),兩者協(xié)同工作,完成小程序頁面生命周期的調(diào)用。

視圖線程有四大狀態(tài):

  1. 初始化狀態(tài):初始化視圖線程所需要的工作,初始化完成后向 “服務(wù)線程”發(fā)送初始化完成信號(hào),然后進(jìn)入等待狀態(tài),等待服務(wù)線程提供初始化數(shù)據(jù)。
  2. 首次渲染狀態(tài):當(dāng)收到服務(wù)線程提供的初始化數(shù)據(jù)后(json和js中的data數(shù)據(jù)),渲染小程序界面,渲染完畢后,發(fā)送“首次渲染完成信號(hào)”給服務(wù)線程,并將頁面展示給用戶。
  3. 持續(xù)渲染狀態(tài):此時(shí)界面線程繼續(xù)一直等待“服務(wù)線程”通過this.setdata()函數(shù)發(fā)送來的界面數(shù)據(jù),只要收到就重新局部渲染,也因此只要更新數(shù)據(jù)并發(fā)送信號(hào),界面就自動(dòng)更新。
  4. 結(jié)束狀態(tài):頁面被回收或者銷毀、應(yīng)用被系統(tǒng)回收、銷毀時(shí)觸發(fā)。

服務(wù)線程五大狀態(tài):

  1. 初始化狀態(tài):此階段僅啟動(dòng)服務(wù)線程所需的基本功能,比如信號(hào)發(fā)送模塊。系統(tǒng)的初始化工作完畢,就調(diào)用自定義的onload和onshow,然后等待視圖線程的“視圖線程初始化完成”號(hào)。onload是只會(huì)首次渲染的時(shí)候執(zhí)行一次,onshow是每次界面切換都會(huì)執(zhí)行,簡單理解,這就是唯一差別。
  2. 等待激活狀態(tài):接收到“視圖線程初始化完成”信號(hào)后,將初始化數(shù)據(jù)發(fā)送給“視圖線程”,等待視圖線程完成初次渲染。
  3. 激活狀態(tài):收到視圖線程發(fā)送來的“首次渲染完成”信號(hào)后,就進(jìn)入激活狀態(tài)既程序的正常運(yùn)行狀態(tài),并調(diào)用自定義的onReady()函數(shù)。此狀態(tài)下就可以通過 this.setData 函數(shù)發(fā)送界面數(shù)據(jù)給界面線程進(jìn)行局部渲染,更新頁面。
  4. 后臺(tái)運(yùn)行狀態(tài):如果界面進(jìn)入后臺(tái),服務(wù)線程就進(jìn)入后臺(tái)運(yùn)行狀態(tài),從目前的官方解讀來說,這個(gè)狀態(tài)挺奇怪的,和激活狀態(tài)是相同的,也可以通過setdata函數(shù)更新界面的。畢竟小程序的框架剛推出,應(yīng)該后續(xù)會(huì)有很大不同吧。
  5. 結(jié)束狀態(tài):頁面被回收或者銷毀、應(yīng)用被系統(tǒng)回收、銷毀時(shí)觸發(fā)。

應(yīng)用的生命周期對頁面生命周期的影響

 

  • 小程序初始化完成后,頁面首次加載觸發(fā)onLoad,只會(huì)觸發(fā)一次。
  • 當(dāng)小程序進(jìn)入到后臺(tái),先執(zhí)行頁面onHide方法再執(zhí)行應(yīng)用onHide方法。
  • 當(dāng)小程序從后臺(tái)進(jìn)入到前臺(tái),先執(zhí)行應(yīng)用onShow方法再執(zhí)行頁面onShow方法。

六、啟動(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)。

更新機(jī)制

小程序冷啟動(dòng)時(shí)如果發(fā)現(xiàn)有新版本,將會(huì)異步下載新版本的代碼包,并同時(shí)用客戶端本地的包進(jìn)行啟動(dòng),即新版本的小程序需要等下一次冷啟動(dòng)才會(huì)應(yīng)用上。 如果需要馬上應(yīng)用最新版本,可以使用 wx.getUpdateManager API 進(jìn)行處理。

運(yùn)行機(jī)制

  • 小程序沒有重啟的概念
  • 當(dāng)小程序進(jìn)入后臺(tái),客戶端會(huì)維持一段時(shí)間的運(yùn)行狀態(tài),超過一定時(shí)間后(目前是5分鐘)會(huì)被微信主動(dòng)銷毀
  • 當(dāng)短時(shí)間內(nèi)(5s)連續(xù)收到兩次以上收到系統(tǒng)內(nèi)存告警,會(huì)進(jìn)行小程序的銷毀

 

關(guān)注深藍(lán)互聯(lián)公眾號(hào)
Copyright ? 2013-2025 深藍(lán)互聯(lián) 版權(quán)所有
友情鏈接: