React Native 宣布發布 0.76 版本。透過此更新,新架構現在將預設為啟用。在版本 0.76 之前,啟用新架構的唯一方法是選擇加入。
本部落格將重點放在新架構中的新增內容。
新的 React Native 架構已經成為頭條新聞一年多了,而且有充分的理由。這種新架構也稱為「無橋」。為什麼叫無橋?我們將在部落格中探討這一點。 ”
在探索新架構之前,讓我們先快速回顧一下之前的架構。
?舊建築回顧
a.有兩個領域-JavaScript 和 Native。
b.有 3 個主題:
- JavaScript Thread (JavaScript):負責 JavaScript 捆綁程式碼。
- 主,UI 本機執行緒:負責本機模組。
- 陰影,或背景線程(瑜珈):負責佈置。
c. JavaScript 和 Native 程式碼相互溝通的唯一方式是透過 Bridge。
d.任何本機元件(例如 Button 或 Alert)都會在 JavaScript 層中序列化為 JSON,並透過橋接送到本機執行緒。在本機執行緒中,此 JSON 隨後會轉換為本機(iOS 或 Android)元件。
e.在本機執行緒中,當本機元件上發生事件時,它會透過橋將事件以 JSON 形式傳送到 JavaScript 執行緒。這種通訊是異步的,使橋能夠促進 JavaScript 和本機元件之間的互動。
?舊架構的問題
JavaScript 和本機層之間的通訊依賴於橋,這是舊架構的主要限制。
效能問題
乾澀或空白影格
節點的重複
✨ 新架構的目標
新架構專注於解決前一個架構的挑戰。其目標是:
快速啟動?
並發渲染? ️
響應式應用程式 ??
支援多個平台?
減少崩潰?
更好的記憶體管理?
同步執行?
?新架構
新架構是用 C 重寫的,它帶來了兩個重大改進:
A. JavaScript 與本機層之間無需橋樑即可直接通訊。這就是為什麼新架構通常被稱為“無橋”。
B.支援多平台(只要平台使用React Native)
?新架構的組成部分:
1。 JavaScript 介面 (JSI)
JSI是JavaScript Interface,這是用C寫的層。任何 JS 引擎都可以與此一起使用,這可以實現跨平台支援 - 不僅在 IOS、Android 上,還可以在智慧電視、智慧手錶等上。
JSI 使 JavaScript 能夠保存對本機模組的參考。這些使得 JavaScript 能夠直接與本機模組通信,並且這使得 JavaScript 和本機線程之間能夠同步通信
PS:你的 React Native 程式碼透過 Metro 進行捆綁並進入 JSI。
2。新的本機模組
New Native Modules 是新的和改進的本機模組。這是用 C 編寫的,它可以實現從 JS/TS api 到 Native 的同步存取。這意味著Native 和 JavaScript 執行緒之間將直接通信,而不需要橋接。 C 還可以編寫您自己的本機模組以進行跨平台共用。
新的本機模組可處理事件、讀取版面配置、排程非同步和同步更新。
正如我們之前所了解的,JSI 保留 TurboModule 中物件的引用,這將允許 JavaScript 程式碼僅在需要時載入每個模組(動態載入模組)。與舊架構相比,這縮短了應用程式的啟動時間。
3。程式碼產生
Codegen 是一個創建強型別合約的工具。這些合約有助於開發人員節省時間,並使跨程式語言之間的通訊更容易。
在 React Native 中,JavaScript 和 Typescript 不是強型別語言,但 C 是強型別語言。為了在 JavaScript 和 C 之間進行通信,codegen 產生介面(類型)。這發生在建置時,以便在運行時快速執行。
因為Codegen JSI(JavaScript Interface)直接與Turbo模組通信,所以無需任何橋樑。
4。新渲染器
新渲染器被稱為 Fabric。這也是用 C 寫的。
還記得 React Native 中有 3 個執行緒嗎? - JavaScript、主/UI 本機和影子/後台執行緒。在舊架構中,問題是我們的主執行緒被阻塞,這導致:
效能問題
空白影格(缺 60FPS)
此外,舊架構必須維護節點和 DOM 的 2 個副本。這會導致記憶體問題
無法中斷低優先級任務來優先處理緊急更新。
在 Fabric 中這些問題都得到了解決。現在,使用新的渲染器,我們可以使用轉換來中斷緊急的低優先級任務。 這將使應用程式回應良好,並且主/UI 本機執行緒不會解鎖。事件將異步執行。 使用新的渲染器系統,將有一個不可變的視圖層次結構樹。
不可變意味著它不會改變。不可變的好處:
這允許線程安全的更新處理。
這也意味著將會有多個正在進行的樹,每個樹代表不同版本的使用者介面。
由於不同版本的UI 有多個樹,*更新可以在後台渲染,而不會阻塞UI *(例如在轉換期間)或在主執行緒上(作為回應)使用者輸入)
新的渲染器還可以同步讀取佈局資訊並跨不同執行緒。這可以在需要時啟用低優先權更新和同步讀取的後台計算。
?端對端架構
?概括
新架構從 0.76 開始預設可用
引進了新架構:JavaScript 介面(JSI)、新原生模組(Turbo 模組)、codegen、新渲染器系統(布料)
JSI 是 JavaScript 介面它基於 C,使 JavaScript 和 Native 模組可以直接通信,無需任何 Bridge
新的原生模組是改良的目前原生模組。用 C 編寫,具有許多好處:與 JavaScript 和本機進行同步通信,無需橋接,延遲載入。
Codegen 產生 JavaScript 和 C 相互通訊的型別介面。
新渲染器(Fabric) 是用 C 寫的新渲染器系統。這可以透過啟用多執行緒並中斷低優先級任務來實現更好的效能。
新的事件循環讓React Native更接近DOM
好好閱讀 GitHub 問題
快樂學習! !
以上是React Native 新架構的詳細內容。更多資訊請關注PHP中文網其他相關文章!

JavaScript在Web開發中的主要用途包括客戶端交互、表單驗證和異步通信。 1)通過DOM操作實現動態內容更新和用戶交互;2)在用戶提交數據前進行客戶端驗證,提高用戶體驗;3)通過AJAX技術實現與服務器的無刷新通信。

理解JavaScript引擎內部工作原理對開發者重要,因為它能幫助編寫更高效的代碼並理解性能瓶頸和優化策略。 1)引擎的工作流程包括解析、編譯和執行三個階段;2)執行過程中,引擎會進行動態優化,如內聯緩存和隱藏類;3)最佳實踐包括避免全局變量、優化循環、使用const和let,以及避免過度使用閉包。

Python更適合初學者,學習曲線平緩,語法簡潔;JavaScript適合前端開發,學習曲線較陡,語法靈活。 1.Python語法直觀,適用於數據科學和後端開發。 2.JavaScript靈活,廣泛用於前端和服務器端編程。

Python和JavaScript在社區、庫和資源方面的對比各有優劣。 1)Python社區友好,適合初學者,但前端開發資源不如JavaScript豐富。 2)Python在數據科學和機器學習庫方面強大,JavaScript則在前端開發庫和框架上更勝一籌。 3)兩者的學習資源都豐富,但Python適合從官方文檔開始,JavaScript則以MDNWebDocs為佳。選擇應基於項目需求和個人興趣。

從C/C 轉向JavaScript需要適應動態類型、垃圾回收和異步編程等特點。 1)C/C 是靜態類型語言,需手動管理內存,而JavaScript是動態類型,垃圾回收自動處理。 2)C/C 需編譯成機器碼,JavaScript則為解釋型語言。 3)JavaScript引入閉包、原型鍊和Promise等概念,增強了靈活性和異步編程能力。

不同JavaScript引擎在解析和執行JavaScript代碼時,效果會有所不同,因為每個引擎的實現原理和優化策略各有差異。 1.詞法分析:將源碼轉換為詞法單元。 2.語法分析:生成抽象語法樹。 3.優化和編譯:通過JIT編譯器生成機器碼。 4.執行:運行機器碼。 V8引擎通過即時編譯和隱藏類優化,SpiderMonkey使用類型推斷系統,導致在相同代碼上的性能表現不同。

JavaScript在現實世界中的應用包括服務器端編程、移動應用開發和物聯網控制:1.通過Node.js實現服務器端編程,適用於高並發請求處理。 2.通過ReactNative進行移動應用開發,支持跨平台部署。 3.通過Johnny-Five庫用於物聯網設備控制,適用於硬件交互。

我使用您的日常技術工具構建了功能性的多租戶SaaS應用程序(一個Edtech應用程序),您可以做同樣的事情。 首先,什麼是多租戶SaaS應用程序? 多租戶SaaS應用程序可讓您從唱歌中為多個客戶提供服務


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

Dreamweaver CS6
視覺化網頁開發工具

WebStorm Mac版
好用的JavaScript開發工具

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

記事本++7.3.1
好用且免費的程式碼編輯器