1、小程序和瀏覽器中有什么不同
瀏覽器中渲染是單線程的。
而在小程序中的運行環境分成渲染層和邏輯層, WXML 模板和 WXSS 樣式工作在渲染層,JS 腳本工作在邏輯層。
2、小程序中如何渲染
WXML模板使用 view 標簽,其子節點用 {{ }} 的語法綁定一個 msg 的變量。
<view>{{ msg }}</view>
在 JS 腳本使用 this.setData 方法把 msg 字段設置成 “Hello World”。
Page({ onLoad: function () { this.setData({ msg: 'Hello World' }) } })
總結:
1.渲染層和數據相關。
2.邏輯層負責產生、處理數據。
3.邏輯層通過 Page 實例的 setData 方法傳遞數據到渲染層。
3、小程序中通訊模型
小程序的渲染層和邏輯層分別由2個線程管理:
渲染層的界面使用了WebView 進行渲染;
邏輯層采用JsCore線程運行JS腳本。
一個小程序存在多個界面,所以渲染層存在多個WebView線程,這兩個線程的通信會經由微信客戶端(下文中也會采用Native來代指微信客戶端)做中轉,邏輯層發送網絡請求也經由Native轉發。
4、數據驅動的思想
在開發UI的過程中,程序需要維護很多變量狀態,同時要操作對應的UI元素。隨着頁面越來越復雜,我們需要維護的變量越來越多,同時要處理的界面上的交互也越來越多,整個程序會變的越來越復雜。
通常情況下視圖和變量的狀態是相關聯的,如果有某種方法可以讓狀態和視圖綁定在一起,那就可以讓我們省去修改視圖的工作,這個方法就叫做數據驅動。
在有了框架之后,我們一般很少會采用直接去修改視圖的方式,更新界面了,絕大多數情況,都會通過操作數據的方式,來更新視圖。通過數據去驅動視圖渲染。