最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

React?Native采用Hermes熱更新打包方案詳解

 更新時(shí)間:2022年05月18日 15:25:30   作者:xiangzhihong8  
這篇文章主要介紹了React?Native采用Hermes熱更新打包實(shí)戰(zhàn),在傳統(tǒng)的熱更新方案中,我們實(shí)現(xiàn)熱更新需要借助code-push開(kāi)源方案,包括熱更新包的發(fā)布兩種方式詳解,感興趣的朋友一起看看吧

1, 背景

如果我們打開(kāi)RN的Android源碼,在build.gradle中回看到這樣一段代碼。

  if (enableHermes) {
        def hermesPath = "../../node_modules/hermes-engine/android/";
        debugImplementation files(hermesPath + "hermes-debug.aar")
        releaseImplementation files(hermesPath + "hermes-release.aar")
    } else {
        implementation jscFlavor
    }

此段代碼的含義是,如果開(kāi)啟了就采用新的hermes,如果未開(kāi)啟則采用老的jsc加載引擎。Hermes 是專(zhuān)門(mén)針對(duì) React Native 應(yīng)用而優(yōu)化的全新開(kāi)源 JavaScript 引擎。對(duì)于很多應(yīng)用來(lái)說(shuō),啟用 Hermes 引擎可以?xún)?yōu)化啟動(dòng)時(shí)間,減少內(nèi)存占用以及空間占用。

2,熱更新傳統(tǒng)方案

在傳統(tǒng)的熱更新方案中,我們實(shí)現(xiàn)熱更新需要借助code-push開(kāi)源方案,熱更新包的發(fā)布有兩種方式:

  • code-push release-react:打bundle并自動(dòng)上傳
  • code-push release:需先打bundle,再通過(guò)該命令上傳

如果采用code-push release-reactapp熱更新后,殺掉進(jìn)程重新進(jìn)入,app首屏加載的時(shí)候速度會(huì)很慢,甚至可能出現(xiàn)白屏。這是因?yàn)樯傻腷undle只是通過(guò)babel編譯轉(zhuǎn)碼,然后經(jīng)過(guò)js壓縮和削減,代碼的執(zhí)行效率并不高。

而開(kāi)啟Hermes引擎后,可以執(zhí)行純文本的 JS 代碼,效率比替換js引擎前更低,執(zhí)行效率也更高。

3,使用Hermes打包

首先,我們執(zhí)行react-native bundle命令進(jìn)行打包,比如。

react-native bundle --platform android --entry-file index.android.js --bundle-output ./bundles/index.android.bundle --assets-dest ./bundles --dev false

接下來(lái),我們需要將bundle轉(zhuǎn)成字節(jié)碼。轉(zhuǎn)化前,我們需要先下載hermes-engine。

npm i hermes-engine

接著,執(zhí)行如下命令將bundle轉(zhuǎn)換成字節(jié)碼

 cd node_modules/hermes-engine/oxs-bin
 ./hermesc -emit-binary -out index.android.bundle.hbc /Users/xxxx/work/react-native/app/bundles/index.android.bundle

將之前bundle目錄下的index.android.bundle刪掉,將當(dāng)前的index.android.bundle.hbc重命名為index.android.bundle,再移動(dòng)到之前bundle目錄下。最后,使用下面的命令執(zhí)行 bundle熱更新包的發(fā)布。

code-push release AndroidAppNamexx ./bundles 1.0.0 --d Staging --des "描述" --m true

使用這種方式后,下次有熱更新的時(shí)候,加載的速度比之前也有明顯的提升,特別是bundle包內(nèi)容比較大的時(shí)候。

到此這篇關(guān)于React Native采用Hermes熱更新打包方案詳解的文章就介紹到這了,更多相關(guān)React Native熱更新內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • React文件名和目錄規(guī)范最佳實(shí)踐記錄(總結(jié)篇)

    React文件名和目錄規(guī)范最佳實(shí)踐記錄(總結(jié)篇)

    React在使用時(shí)非常靈活,如果沒(méi)有一個(gè)規(guī)范約束項(xiàng)目,在開(kāi)發(fā)過(guò)程中會(huì)非?;靵y,本文將介紹幾個(gè)優(yōu)秀的規(guī)范,介紹文件名和目錄前,需要先簡(jiǎn)述一下幾種通用的類(lèi)型,用來(lái)區(qū)分文件的功能,感興趣的朋友一起看看吧
    2022-05-05
  • React中useState的使用方法及注意事項(xiàng)

    React中useState的使用方法及注意事項(xiàng)

    useState通過(guò)在函數(shù)組件里調(diào)用它來(lái)給組件添加一些內(nèi)部state,下面這篇文章主要給大家介紹了關(guān)于React中useState的使用方法及注意事項(xiàng)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-08-08
  • Redux使用方法和基本原理解讀

    Redux使用方法和基本原理解讀

    這篇文章主要介紹了Redux使用方法和基本原理,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • react+ts實(shí)現(xiàn)簡(jiǎn)單jira項(xiàng)目的最佳實(shí)踐記錄

    react+ts實(shí)現(xiàn)簡(jiǎn)單jira項(xiàng)目的最佳實(shí)踐記錄

    這篇文章主要介紹了react+ts實(shí)現(xiàn)簡(jiǎn)單jira項(xiàng)目,本文通過(guò)圖文實(shí)例相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-07-07
  • React精髓!一篇全概括小結(jié)(急速)

    React精髓!一篇全概括小結(jié)(急速)

    這篇文章主要介紹了React精髓!一篇全概括小結(jié)(急速),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-05-05
  • antd踩坑之javascriptEnabled配置方式

    antd踩坑之javascriptEnabled配置方式

    這篇文章主要介紹了antd踩坑之javascriptEnabled配置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • 使用webpack5從0到1搭建一個(gè)react項(xiàng)目的實(shí)現(xiàn)步驟

    使用webpack5從0到1搭建一個(gè)react項(xiàng)目的實(shí)現(xiàn)步驟

    這篇文章主要介紹了使用webpack5從0到1搭建一個(gè)react項(xiàng)目的實(shí)現(xiàn)步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • ReactDOM 隱藏特性詳解

    ReactDOM 隱藏特性詳解

    這篇文章主要為大家介紹了ReactDOM 隱藏特性詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • 詳解Stack?Navigator中使用自定義的Render?Callback

    詳解Stack?Navigator中使用自定義的Render?Callback

    這篇文章主要為大家介紹了Stack?Navigator中使用自定義的Render?Callback使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • 深入理解React Native原生模塊與JS模塊通信的幾種方式

    深入理解React Native原生模塊與JS模塊通信的幾種方式

    本篇文章主要介紹了深入理解React Native原生模塊與JS模塊通信的幾種方式,具有一定的參考價(jià)值,有興趣的可以了解一下
    2017-07-07

最新評(píng)論

广河县| 鲜城| 桓台县| 车险| 建宁县| 东安县| 老河口市| 定日县| 鄂托克前旗| 彰武县| 东海县| 依安县| 榆树市| 府谷县| 堆龙德庆县| 阿克苏市| 卢龙县| 贞丰县| 岑巩县| 通海县| 筠连县| 双流县| 蕲春县| 阿拉善右旗| 丰宁| 雷山县| 玛多县| 滕州市| 台江县| 白山市| 横山县| 兴城市| 汕头市| 阿合奇县| 水城县| SHOW| 泉州市| 绵阳市| 龙里县| 策勒县| 清河县|