小程序的核心思想:數(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