官术网_书友最值得收藏!

2.2.3 為什么“沒有DOM”

WKWebView及JavaScriptCore提供了小程序的運行環境。WKWebView負責對AXML和ACSS進行解析和執行,并渲染和展示。JavaScriptCore(Android是serviceWork)提供了開發者所寫的邏輯代碼(JavaScript)的運行環境,該運行環境被稱為Service(沒有Document、Window等對象),Service中的代碼與WebView中的代碼完全隔離,如圖2-3所示。

圖2-3 小程序前端框架

通俗來說,在小程序中JavaScript邏輯的運行和視圖的運行是在兩個不同環境中的,App Service通過底層架構來操作視圖。因為JavaScript和視圖(DOM所在)沒有運行在同一容器中[在傳統H5,JavaScript和視圖(DOM所在)運行在同一容器中],且小程序的JavaScript邏輯是用JavaScriptCore來解析的,JavaScriptCore沒有Document、Window等對象,所以小程序不能使用DOM操作(并不是真的沒有DOM)。每啟動一個Page頁面,會有一個Render容器啟動WebView+Service,所以層級過多的小程序也是不推薦的。

一個小程序頁面對應一個 Service,客戶端通過 JavaScriptCore為開發者的Service代碼提供運行環境;一個小程序可能有一個或多個Page作為向用戶展示內容的交互頁面,客戶端由WKWebView提供Page解析和渲染支持;頁面與頁面之間的通信通過Service環境中轉。

主站蜘蛛池模板: 资溪县| 安平县| 河南省| 南召县| 郴州市| 高雄市| 邢台县| 禄劝| 工布江达县| 静宁县| 襄垣县| 深水埗区| 大姚县| 香格里拉县| 黄龙县| 阳信县| 仪征市| 长治县| 临夏市| 奈曼旗| 含山县| 阿拉善右旗| 依兰县| 台中市| 临猗县| 泽普县| 桐梓县| 将乐县| 平武县| 舒城县| 新邵县| 抚顺县| 安吉县| 扶余县| 大英县| 阿拉尔市| 九江县| 蓬安县| 湟中县| 武冈市| 廉江市|