關(guān)于新 React Native 架構(gòu)的一切 2023 更新
在我們開始新的React Native 架構(gòu)之前,讓我們了解一下 React Native 的現(xiàn)有架構(gòu)。我們知道 React Native 的單線程性,它的主要 3 個(gè)線程,即 Javascript 線程、主線程和影子線程之間沒有直接通信,它們主要通過異步 JSON 線程通過橋。
現(xiàn)在,Bridge 在線程之間的這種通信中起著至關(guān)重要的作用,因此存在依賴性、不確定性和延遲。為了克服這種依賴性,需要 React Native 新架構(gòu)。
讓我們看看采用新的React Native 架構(gòu)的累積原因。當(dāng)前 React Native 架構(gòu)的缺點(diǎn)是
React Native 應(yīng)用程序中線程間通信橋的依賴性。
可序列化的橋需要額外的復(fù)制,而不是在應(yīng)用程序線程之間共享內(nèi)存。
異步模型不能確保消息在目的地的傳遞時(shí)間。
數(shù)據(jù)傳輸異常緩慢。
由于異步 UI 更新導(dǎo)致意外的頁面跳轉(zhuǎn)。
2018年第二季度開始,由于RN剛上線,react native的重構(gòu)正在規(guī)劃中。
關(guān)于新 React Native 架構(gòu)的一切
為了增強(qiáng)和克服 React Native 舊架構(gòu)的缺點(diǎn),新架構(gòu) React Native V 0.70 最近于 2022 年 10 月推出,增加了框架的性能和靈活性。
新架構(gòu)中保持不變的一件事是 Javascript 引擎 Hermes,它針對React Native 應(yīng)用程序變得更加優(yōu)化。
隨著重新設(shè)計(jì)的 React Native 架構(gòu)繼續(xù)發(fā)展,越來越多的信息變得容易訪問和公開。從根本上說,這個(gè)備受期待的新設(shè)計(jì)旨在提高性能,使其更接近原生應(yīng)用程序,并促進(jìn) React Native 框架與基于 Javascript 的混合框架的集成。
想要利用 New React Native Architecture 的高級功能?
聘請我們的 React Native 開發(fā)人員,他們將帶來最好的 React 生態(tài)系統(tǒng),讓您的跨平臺移動(dòng)應(yīng)用程序脫穎而出。
以下是 React Native 重構(gòu)中的關(guān)鍵元素,我們稱它們?yōu)橹е亍?/span>
織物
Fabric 是一個(gè)誤稱,經(jīng)常被用來指代整個(gè)新的 React Native 架構(gòu)。實(shí)際上,F(xiàn)abric 只說明了整個(gè)結(jié)構(gòu)中的一層,即UI 層。
一開始,F(xiàn)abric 可以在 UIManager 的幫助下在 C++ 中直接創(chuàng)建 Shadow 樹,從而通過消除在線程之間移動(dòng)的必要性來增強(qiáng) UI 交互性。
此外,F(xiàn)abric 利用 JSI 向 Javascript 端公開 UI 功能。這導(dǎo)致兩端直接交互,而不是通過 Bridge 與 Javascript 端連接。Javascript 端可以優(yōu)先處理時(shí)間敏感的 UI 任務(wù),并在任何其他任務(wù)之前同時(shí)執(zhí)行它們。所有功勞都?xì)w功于此控件,它為 UI 端啟用了優(yōu)先隊(duì)列。
渦輪模塊
本質(zhì)上,Turbomodules 是具有新實(shí)現(xiàn)和行為的舊 Native 模塊。
Turbomodules 的最佳特性是它們是延遲加載的。換句話說,這意味著 Javascript 代碼只會(huì)根據(jù)需要加載每個(gè)模塊并維護(hù)對它的顯式引用。對于具有大量本機(jī)模塊的程序,這可以大大減少啟動(dòng)時(shí)間。
代碼生成器
Codegen 是新 React 設(shè)計(jì)的另一個(gè)實(shí)用組件。RN 程序?qū)⒆詣?dòng)檢查 Javascript 和 Native 線程之間的同步和互操作性。在此,與運(yùn)行時(shí)相比,在構(gòu)建時(shí)將生成更多本機(jī)代碼。
Turbomodules 和 Fabric 使用的接口組件將由 Codegen 定義。所有這一切都是為了消除重復(fù)代碼的需要,并且能夠毫無疑問地更快地傳輸數(shù)據(jù),因?yàn)椴辉傩枰诿看蔚鷷r(shí)進(jìn)行數(shù)據(jù)驗(yàn)證。
無橋
現(xiàn)在,我們想知道在我們對新建筑的初步印象之后,這座橋發(fā)生了什么。使用重新設(shè)計(jì)的 Javascript 接口 (JSI) 組件逐步替換 Bridge 是新架構(gòu)的主要目標(biāo)之一。
雖然很清楚為什么要從新的 React Native 中完全刪除 Bridge,但主要原因是它造成了不必要的問題和對是否接收到數(shù)據(jù)和/或相當(dāng)大的延遲的懷疑。
將完全取代 Bridge 的層稱為 React Native JSI 或 Javascript 接口。主要目標(biāo)是在不需要 Bridge 作為中間步驟的情況下實(shí)現(xiàn) Javascript 和 Native 端之間的通信。
JS 包與 JSC 的獨(dú)立性是 JSI(Javascript 核心)使之成為可能的一種修改。這意味著不同的 Javascript 引擎,如 Chrome 引擎 V8,最終可能會(huì)取代 JSC 引擎。
此外,通過使用 JSI,Javascript 將能夠通過保存對 C++ 主機(jī)對象的引用并調(diào)用它們的方法來顯式識別 Native 組件并與之連接。
想要開發(fā)令用戶驚嘆的業(yè)務(wù)應(yīng)用程序?
我們的 React Native 開發(fā)人員利用新的架構(gòu)模式通過快速開發(fā)實(shí)現(xiàn)您的目標(biāo)。我們是實(shí)現(xiàn)您的業(yè)務(wù)目標(biāo)的理想React Native 應(yīng)用程序開發(fā)公司。
好吧,在我們考慮遷移之前,這里是新架構(gòu)的出現(xiàn)方式。
如何遷移到新的 React Native 架構(gòu)?
要將 React Native 應(yīng)用程序更新到最新版本,您可能需要遷移到新的 React Native 架構(gòu)。讓我們從最初的優(yōu)先事項(xiàng)開始。
您需要特定版本的 React Native 應(yīng)用程序才能更輕松地進(jìn)行更新。您需要一個(gè) React nightly 版本來訪問最新的更改,并且您最終必須升級到最新的 React Native 穩(wěn)定版本 (0.67.2)。
接下來,找到最新的 React Native 并安裝它。稍后我們可以繼續(xù)進(jìn)行特定于操作系統(tǒng)的改進(jìn)。
對于 Android,您可以在更新到最新的 Gradle 版本后安裝最新的 React Gradle 插件?,F(xiàn)在,問題是如何?這很簡單!直接使用 React Native 參考指南中的代碼。對于 iOS,在 iOS 構(gòu)建選項(xiàng)中打開 C++ 語言功能支持。
僅此而已。接下來,問題來了,React Native Applications到底是怎么遷移的呢?
有很多,但有兩種主要的遷移方法,或者我們只說兩個(gè)存儲(chǔ)庫。
在一種情況下,您只需要從前者過渡到更新者。而在另一種情況下,除了確保舊的仍然可以使用之外,您還可以從創(chuàng)建新的開始。讓我們一起看看他們兩個(gè)。
1.RNNewArchitectureApp
這是第一個(gè)。它涉及從舊的過渡到新的。您需要做的就是從最新的 React Native 0.67 版本中獲取原生組件,并將它們應(yīng)用到新的 React Native 架構(gòu)中。
每個(gè)提交都經(jīng)過單獨(dú)的遷移過程。每個(gè)分支都演示了不同 React Native 版本之間的轉(zhuǎn)換。這些部分在主分支中通讀。
2.RNNewArchitectureLibraries
此方法逐步演示了 TurboModule 和 Fabric 組件的創(chuàng)建。與第一種方法不同,這些分支主要用于創(chuàng)建,而不是用于轉(zhuǎn)換。
那么,一旦建立了新的庫和模塊,會(huì)發(fā)生什么呢?一般來說,它最終歸結(jié)為保持與早期版本的 React Native 部件的兼容性。
結(jié)論
事實(shí)證明,React Native 是跨平臺現(xiàn)代商業(yè)應(yīng)用程序的絕佳選擇。新的 React Native 架構(gòu)只會(huì)增加框架的優(yōu)勢。添加到使用 React Native 構(gòu)建的超過 34,000 個(gè)應(yīng)用程序的列表中,并在市場上對您的業(yè)務(wù)進(jìn)行排名。
(言鼎科技)專做軟件開發(fā),微信小程序,網(wǎng)站開發(fā),軟件外包,手機(jī)APP開發(fā),歡迎資訊!