冷門前端知識,介紹雙執行緒的小程式!
小程式的渲染層和邏輯層分別由2個執行緒理:渲染層的介面使用了WebView進行渲染,邏輯層採用JsCore執行緒執行JS指令碼。為什麼要這麼設計呢?跟 陝西優就業 小編一起看看吧!
管控和安全,為了解決這些問題,我們需要阻止開發者使用一些瀏覽器提供的,諸如跳轉頁面、操作 DOM、動態執行指令碼的開放性介面。
我們可以使用客戶端系統的JavaScript引擎,iOS下的JavaScriptCore 框架,安卓下騰訊x5核心提供的 JsCore環境。透過提供一個沙箱環境來執行開發者的JavaScript程式碼來解決。這個沙箱環境只提供純JavaScript的解釋執行環境,沒有任何瀏覽器相關介面。
這就是小程式雙執行緒模型的由來:
1.邏輯層:建立一個單獨的執行緒去執行JavaScript,在這個環境下執行的都是有關小程式業務邏輯的程式碼
2.渲染層:介面渲染相關的任務全都在WebView執行緒裡執行,透過邏輯層程式碼去控制渲染哪些介面。一個小程式存在多個介面,所以渲染層存在多個WebView執行緒
雙執行緒通訊:
把開發者的JS邏輯程式碼放到單獨的執行緒去執行,但在Webview執行緒裡,開發者就沒法直接操作DOM。那要怎麼去實現動態更改介面呢?
前面我們知道,邏輯層和渲染層的通訊會由 Native 做中轉,邏輯層傳送網路請求也經由Native轉發。這是不是意味著,我們可以把 DOM 的更新透過簡單的資料通訊來實現呢?
Virtual DOM 相信大家都已有了解,大概是這麼個過程:用 JS 物件模擬 DOM 樹 -> 比較兩棵虛擬 DOM 樹的差異 -> 把差異應用到真正的 DOM 樹上。
在渲染層把 WXML 轉化成對應的JS物件。
在邏輯層發生資料變更的時候,透過宿主環境提供的setData方法把資料從邏輯層傳遞到Native,再轉發到渲染層。
經過對比前後差異,把差異應用在原來的DOM樹上,更新介面。
我們透過把WXML轉化為資料,透過Native進行轉發,來實現邏輯層和渲染層的互動和通訊。而這樣完整的一套框架,基本上都是透過小程式的基礎庫來完成的。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69902581/viewspace-2642983/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Python程式與執行緒知識Python執行緒
- 前置知識—程式和執行緒執行緒
- Java多執行緒傻瓜入門介紹Java執行緒
- 理解微信小程式的雙執行緒模型微信小程式執行緒模型
- 執行緒池介紹執行緒
- Android小知識-Java多執行緒的基礎知識瞭解下AndroidJava執行緒
- 多執行緒系列(十七) -執行緒組介紹執行緒
- iOS 多執行緒介紹iOS執行緒
- Android小知識-Java多執行緒相關(執行緒間通訊)上篇AndroidJava執行緒
- 執行緒基本知識點執行緒
- Android執行緒池使用介紹Android執行緒
- 執行緒本地ThreadLocal的介紹與使用!執行緒thread
- Android小知識-Java多執行緒相關(Lock使用)AndroidJava執行緒
- 區塊鏈入門知識介紹!區塊鏈
- 多執行緒基礎知識執行緒
- Android 基礎知識——執行緒Android執行緒
- 多執行緒程式設計介紹-條件變數執行緒程式設計變數
- 執行緒介紹及建立方式執行緒
- 前端冷知識(持續更新2020.12.13)前端
- 多執行緒(三)、執行緒池 ThreadPoolExecutor 知識點總結執行緒thread
- python關於執行緒的一點介紹Python執行緒
- 程式和執行緒簡介執行緒
- Thread執行緒知識點講解thread執行緒
- 執行緒池知識點詳解執行緒
- 執行緒學習知識總結執行緒
- 建立執行緒知識點總結執行緒
- Java多執行緒相關知識Java執行緒
- java多執行緒的入門小記Java執行緒
- PHP程式設計師遇到問題的冷門知識點PHP程式設計師
- Nexus.js介紹:一個多執行緒的JavaScript執行庫JS執行緒JavaScript
- Java多執行緒程式設計基礎知識彙總Java執行緒程式設計
- 作業系統知識回顧(2)--程式與執行緒作業系統執行緒
- LINUX作業系統知識:程式與執行緒詳解Linux作業系統執行緒
- Python的冷知識Python
- 第二章 Redis API的使用 單執行緒介紹【Redis入門教程】RedisAPI執行緒
- k8s(00)入門知識介紹K8S
- 多執行緒基礎知識點梳理執行緒
- 記錄Java執行緒相關知識Java執行緒