小程序-工作原理

小程序的核心思想:數(shù)據(jù)驅(qū)動(dòng)+通信模型

通信模型:小程序的渲染層和邏輯層分別由2個(gè)線(xiàn)程管理:渲染層的界面使用了WebView 進(jìn)行渲染;邏輯層采用JsCore線(xiàn)程運(yùn)行JS腳本。一個(gè)小程序存在多個(gè)界面,所以渲染層存在多個(gè)WebView線(xiàn)程,這兩個(gè)線(xiàn)程的通信會(huì)經(jīng)由微信客戶(hù)端(下文中也會(huì)采用Native來(lái)代指微信客戶(hù)端)做中轉(zhuǎn),邏輯層發(fā)送網(wǎng)絡(luò)請(qǐng)求也經(jīng)由Native轉(zhuǎn)發(fā),小程序的通信模型如圖所示。

通信模型.png

數(shù)據(jù)驅(qū)動(dòng):WXML可以先轉(zhuǎn)成JS對(duì)象,然后再渲染出真正的Dom樹(shù);通過(guò)setData把msg數(shù)據(jù)從“Hello World”變成“Goodbye”,產(chǎn)生的JS對(duì)象對(duì)應(yīng)的節(jié)點(diǎn)就會(huì)發(fā)生變化,此時(shí)可以對(duì)比前后兩個(gè)JS對(duì)象得到變化的部分,然后把這個(gè)差異應(yīng)用到原來(lái)的Dom樹(shù)上,從而達(dá)到更新UI的目的,這就是“數(shù)據(jù)驅(qū)動(dòng)”的原理,如圖所示。

數(shù)據(jù)驅(qū)動(dòng).png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Swift1> Swift和OC的區(qū)別1.1> Swift沒(méi)有地址/指針的概念1.2> 泛型1.3> 類(lèi)型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,675評(píng)論 1 32
  • 微信小程序 項(xiàng)目結(jié)構(gòu) 上圖為微信小程序的項(xiàng)目結(jié)構(gòu),pages下面包含了小程序中的每一個(gè)頁(yè)面,每一個(gè)頁(yè)面由頁(yè)面結(jié)構(gòu),...
    Jensen95閱讀 9,109評(píng)論 0 19
  • 為什么小程序比較快? 安裝包緩存分包加載雙線(xiàn)程webview預(yù)加載native組件 什么是wxs? https:/...
    虎妞先生閱讀 2,981評(píng)論 0 1
  • 總是在想著別人會(huì)如何看待自己,這樣的,自己也漸漸迷失了自我,成為一個(gè)只知道為他人服務(wù)的奴隸。奴隸是最不值錢(qián)的什物,...
    和珅不是胖子閱讀 146評(píng)論 0 0

友情鏈接更多精彩內(nèi)容