微信小程序為了更好的提高管控性和安全性,所以采用雙線程模型。
如下面官方圖,微信小程序的渲染層與管理層分別由兩個線程管理:渲染層采用了Webview來渲染,一個小程序存在多個界面,所以渲染層存在多個 WebView 線程,而邏輯層采用js腳本來渲染。視圖層和邏輯層通過系統(tǒng)層的 WeixinJsBridage 進行通信:邏輯層把數(shù)據(jù)變化通知到視圖層,觸發(fā)視圖層頁面更新,視圖層把觸發(fā)的事件通知到邏輯層進行業(yè)務處理。之后邏輯層和試圖層的通信會由 Native (微信客戶端)做中轉(zhuǎn),邏輯層發(fā)送網(wǎng)絡請求也經(jīng)由 Native 轉(zhuǎn)發(fā)。
Virtual DOM 的渲染過程大概為:用JS對象模擬DOM樹->比較兩棵虛擬DOM樹的差異->把差異應用到真正的DOM樹上。
微信小程序頁面的具體流程類似:在渲染層,宿主環(huán)境會把wxml轉(zhuǎn)化成對應的js對象,在邏輯層發(fā)生數(shù)據(jù)變更的時候,我們需要通過宿主環(huán)境提供的 setData 方法把數(shù)據(jù)從邏輯層傳遞到渲染層,再經(jīng)過對比前后差異,把差異應用在原來的Dom樹上,渲染出正確的UI界面。
以上就是對微信小程序底層架構(gòu)原理簡單的介紹。
以上內(nèi)容來自網(wǎng)絡,侵刪