精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

React Native重構即將完成,改善版本有何不同?

如意 ? 來源:百家號 ? 作者: 讀芯術 ? 2020-07-01 14:43 ? 次閱讀

2015年,React Native被首次推出,使用ReactJS框架開發原生跨平臺應用程序。該框架獲得了社區的大力支持,并憑借其Web同行的名聲逐漸普及,但其實該平臺的原始設計并非沒有缺點。

2018年,Facebook團隊宣布他們正試圖解決多年來開發人員遇到的這些最常見問題,進行ReactNative重構。這樣的重構改善體現在哪些方面呢?本文將從性能和開發速度方面來談一談。

原構造

ReactNative曾被稱作“不依賴于平臺”的應用框架。從某種程度上講,該框架的主要目標是讓開發人員編寫Javascript React代碼,而React Native可以在幕后部署其機制,以將Reactreconciliation tree轉錄成可由原生基礎設施解釋的內容。它能夠:

· 正確顯示UI

· 訪問原生功能

通常,Android/ iOS生態系統目前的機制如下所示:

每個React Native應用程序中運行著3個并行線程:

· 陰影線程用來設計布局。它使用Facebook自帶的Yoga布局引擎來設計flexbox布局并將其發送回UI線程。

· JS線程讀取和編譯所有JavaScript代碼以及執行應用程序大部分業務邏輯。將所有Javascript代碼融匯到一個文件中,并翻譯任何其他Javascript語法(例如JSX或TS),然后將此代碼發送到JavaScriptCore引擎以便運行。

· 原生線程是運行原生代碼的位置。每當需要更新UI或訪問本機函數時,它將與JS線程連接。它分為原生UI和原生模塊。原生模塊在啟動時都處于預備狀態,這意味著即使ReactNative使用藍牙模塊,該藍牙模塊也始終處于運行狀態。

使用橋接器可以連接JS線程和原生線程,在后臺,C++模塊圍繞一個異步隊列構建。每當它從任一方獲取數據時,都會將數據序列化為字符串并將其通過隊列傳遞,并在到達時反序列化。

這意味著所有線程都依賴于跨網橋傳輸的異步JSON消息,并且這些消息發送到任一端,期望它們在將來的某個時間引發響應,但它還存在擁塞的風險。

每當瀏覽者在原生環境中拖動滾動條時,信息都會異步發送到JavaScript領域,但是原生環境不會等待Java腳本執行工作并將其以另一種方式發送回去。這會造成延遲,屏幕上出現信息之前會一片空白。

同樣,布局設計需要經過很多次才能在屏幕上顯示,因為在原生設計布局之前,它需要想盡辦法到達Yoga引擎,當然這也意味著要通過橋接器。可以看到異步序列化來回發送JSON數據是怎樣造成性能問題的,但是如何使JavaScript與本機通信呢?這就要靠JSI發揮作用了。

新架構

重構版的ReactNative將逐漸棄用橋接器,轉而采用新元素——JavaScript接口(JSI)。JSI的一些改進令人驚喜,首先就是JS軟件包不再依賴JSC。換句話說,現在可以輕松地將JSC引擎與其他(可能更高性能的)JavaScript引擎互換,例如V8。

第二個改進針對的是這種新架構的基礎:“通過使用JSI,JavaScript可以保存對C++主機對象的引用并對其調用方法。JavaScript和原生領域將真正彼此了解。”

這也意味著JSI將允許所有線程之間完全互操作。通過共享所有權,JavaScript代碼可以直接從JS線程運行原生方法,不需要將要傳遞的消息序列化為JSON,這消除了橋接器上的所有擁塞和異步問題。

除了顯著改善不同線程之間的通信之外,這種新架構還可以直接控制原生模塊。這意味著我們可以在需要時使用原生模塊,而不是在啟動時將它們全部引導一次。這大大提高了性能,節省了啟動時間。

在掌握了C ++的強大功能的基礎上,懂得如何將React Native用于定位非常大的系統面板是很容易的。

推出這么多年,ReactNative已過時、待清理、需維護的部分已經積攢很多了,React Native框架已經清除了某些功能,諸如Webview或AsyncStorage之類的模塊正逐漸從React Native核心中移出,將轉變為社區管理的存儲庫。

憑借新的精簡核心模塊以及JavaScript代碼與原生代碼之間強大的互操作性機制,React Native重構將實現許多性能改進和更全方位的開發人員工作流。它計劃在2020年第四季度之前完成全面重組,更好的性能和全新開發體驗十分令人期待。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 可重構
    +關注

    關注

    0

    文章

    8

    瀏覽量

    9019
  • ui
    ui
    +關注

    關注

    0

    文章

    204

    瀏覽量

    21342
  • reactjs
    +關注

    關注

    0

    文章

    4

    瀏覽量

    4553
收藏 人收藏

    評論

    相關推薦

    使用SSR構建React應用的步驟

    使用SSR(Server-Side Rendering,服務器端渲染)構建React應用的步驟通常包括以下幾個階段: 一、項目初始化與配置 創建React項目 : 可以使用Create React
    的頭像 發表于 11-18 11:30 ?226次閱讀

    Taro鴻蒙技術內幕系列(一):如何將React代碼跑在ArkUI上

    基于 Taro 打造的京東鴻蒙 APP 已跟隨鴻蒙 Next 系統公測,本系列文章將深入解析 Taro 如何實現使用 React 開發高性能鴻蒙應用的技術內幕。
    的頭像 發表于 10-25 17:24 ?239次閱讀
    Taro鴻蒙技術內幕系列(一):如何將<b class='flag-5'>React</b>代碼跑在ArkUI上

    重構改善既有代碼的設計」實戰篇

    背景 在軟件開發的世界里,代碼重構是提升項目質量、適應業務變化的關鍵步驟。最近,我重新翻閱了《重構改善既有代碼的設計 第二版》,這本書不僅重新點燃了我對重構的熱情,還深化了我的理解:
    的頭像 發表于 08-14 10:42 ?207次閱讀
    「<b class='flag-5'>重構</b>:<b class='flag-5'>改善</b>既有代碼的設計」實戰篇

    Matter和Z-Wave何不同?它們的應用哪些?

    Labs(亦稱“芯科科技”)廣泛支持智能家居行業中較具潛力的兩種現有標準:Matter 和 Z-Wave,并制作本篇博文幫助開發人員了解這兩項標準的特性、它們之間何不同、它們對智能家居用戶和開發人員的意義,以及對應的解決方案和設計考量。
    的頭像 發表于 07-24 16:45 ?578次閱讀

    請問IDF中的pthread和Task相比何不同?

    IDF中的 pthread 和 Task 相比何不同?
    發表于 06-24 06:46

    Verilog的版本哪些

    電子發燒友網站提供《Verilog的版本哪些.docx》資料免費下載
    發表于 05-31 11:29 ?0次下載

    Traveo II B-H中的SECURE和SECURE_WITH_DEBUG生命周期階段何不同?

    Traveo II B-H 中的 SECURE 和 SECURE_WITH_DEBUG 生命周期階段何不同?
    發表于 05-21 07:07

    商湯科技即將推出日日新大模型5.0粵語版本

    在盛大的“新質企業家聯合會”成立典禮上,商湯科技副總裁、智慧城市與商業事業群總裁張果琲宣布了一項重要消息。商湯科技即將推出日日新大模型5.0的粵語版本,這一新版本將基于大裝置和強大的技術能力,為粵語語言處理帶來顯著的提升。
    的頭像 發表于 05-13 10:58 ?558次閱讀

    實錘!騰訊終于擁抱鴻蒙生態,微信鴻蒙原生版本即將上線

    系統 。甚至網友表示, 微信不適配鴻蒙系統我就卸載QQ ,用華為的暢連。其實不然,微信作為國民級社交軟件是肯定會適配鴻蒙系統的,至于適配的進度則還需要時間。不過近日,消息稱微信即將支持鴻蒙原生系統
    發表于 04-30 21:14

    鴻蒙OS開發實例:【Native C++】

    使用DevEco Studio創建一個Native C++應用。應用采用Native C++模板,實現使用NAPI調用C標準庫的功能。使用C標準庫hypot接口計算兩個給定數平方和的平方根。在輸入框中輸入兩個數字,點擊計算結果按鈕顯示計算后的數值。
    的頭像 發表于 04-14 11:43 ?2506次閱讀
    鴻蒙OS開發實例:【<b class='flag-5'>Native</b> C++】

    異地組網與傳統網絡何不同?SD-WAN組網與傳統網絡何不同?

    異地組網與傳統網絡何不同?SD-WAN組網與傳統網絡何不同? 異地組網與傳統網絡不同之處 異地組網是一種網絡架構,可以將遠程辦公地點、分支機構和數據中心等多個地理位置的設備連接起來
    的頭像 發表于 03-27 16:57 ?534次閱讀

    院士稱全球芯片產業格局即將重構

    中國工程院院士鄔賀銓在大會上對RISC-V的發展給予了高度評價。他表示,RISC-V正進入應用爆發期,成為芯片指令集架構的第三極,為全球芯片產業格局的重構帶來了重大機遇。
    的頭像 發表于 03-14 15:41 ?5551次閱讀

    銅線和鋁線制作的變壓器何不同?

    銅線和鋁線制作的變壓器何不同? 銅線和鋁線制作的變壓器許多不同之處。雖然它們都是用于電力傳輸和轉換的重要元件,但兩者在導電性能、成本、重量和制造工藝等方面存在差異。下面將詳細介紹銅線和鋁線制作
    的頭像 發表于 02-02 09:36 ?3537次閱讀

    光纖和光纜何不同之處?

    很多人會有這樣的疑問,光纖和光纜何不同之處?主要是因為光纖和光纜這兩個名詞容易引起混淆。在嚴格的定義下,光纖和光纜是兩種不同的東西,然而在現實生活中,許多人仍然會混淆這兩者。為了更好地理解光纖和光纜之間的區別,我們一起來看一下。
    的頭像 發表于 01-15 17:01 ?796次閱讀

    噪音抑制與主動降噪:何不同之處?

    噪音抑制與主動降噪:何不同之處?
    的頭像 發表于 11-30 17:29 ?651次閱讀
    噪音抑制與主動降噪:<b class='flag-5'>有</b><b class='flag-5'>何不</b>同之處?