欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

React Native 資源包拆分實戰(zhàn)分析

 更新時間:2023年08月01日 09:31:02   作者:涅槃快樂是金  
這篇文章主要為大家介紹了React Native 資源包拆分實戰(zhàn)分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

Native加載多個 JS Bundle

客戶端會先加載公共基礎(chǔ)包,加載完成后,再加載業(yè)務(wù)包。

安卓端加載多個 JS Bundle

先加載公共基礎(chǔ)包,安卓端需要在創(chuàng)建 ReactNativeHost 實例的時候重寫 getBundleAssetName()方法或 getJSBundleFile()方法,返回公共基礎(chǔ)包的本地路徑,然后再調(diào)用 ReactNativeHost實例的 getReactInstanceManager() 方法觸發(fā) ReactInstanceManager實例的創(chuàng)建,最后調(diào)用 createReactContextInBackground()方法來觸發(fā) ReactNative 的初始化流程。

// 安卓端代碼示例 - 加載公共基礎(chǔ)包
ReactNativeHost RNHost = new ReactNativeHost(application) {
  @Nullable 
  @Override 
  protected String getBundleAssetName() {
    return "Assets目錄下的common.android.bundle路徑";
  }
  @Nullable 
  @Override 
  protected String getJSBundleFile() {
    return "本地磁盤中的common.android.bundle路徑";
  }
}
ReactInstanceManager bridge = RNHost.getReactInstanceManager();
if (!bridge.hasStartedCreatingInitialContext()) {
  bridge.createReactContextInBackground();
}

安卓端ReactNative在加載完公共基礎(chǔ)包后,會回調(diào)ReactInstanceManager 實例中注冊的所有 ReactInstanceEventListeneronReactContextInitialized()方法,可以在onReactContextInitialized()回調(diào)方法中加載業(yè)務(wù)包。

通過使用上文中的 ReactInstanceManager 實例的 getCurrentReactContext()獲取到當前的 ReactContext 上下文對象,再調(diào)用上下文對象的 getCatalystInstance()方法獲取 CatalystInstance 實例,最終調(diào)用該實例的 loadScriptFromFile() 方法完成業(yè)務(wù)包的加載。

// 安卓端代碼示例 - 加載業(yè)務(wù)包
ReactContext context = RNHost.getReactInstanceManager().getCurrentReactContext();
CatalystInstance catalyst = context.getCatalystInstance();
String fileName = "本地業(yè)務(wù)包business.android.bundle路徑"
catalyst.loadScriptFromFile(fileName, fileName, false);

iOS端加載多個 JS Bundle

先加載公共基礎(chǔ)包,iOS端可以使用 RCTBridge 的實例化方法 [RCTBridge initWithBundleURL: moduleProvider: launchOptions:],傳入公共基礎(chǔ)包的本地路徑。

// iOS端代碼示例 - 加載公共基礎(chǔ)包
NSURL *commonBundleURL = [[NSBundle mainBundle] URLForResource:@"common" withExtension:@"ios.bundle"];//公共基礎(chǔ)包路徑
RCTBridge *bridge = [[RCTBridge alloc] initWithBundleURL:commonBundleURL moduleProvider:nil launchOptions:launchOptions];

iOS端ReactNative在加載完公共基礎(chǔ)包后,會發(fā)送 RCTJavaScriptDidLoadNotification 事件全局通知。
可以通過注冊監(jiān)聽 RCTJavaScriptDidLoadNotification 事件,然后加載業(yè)務(wù)包,可以使用RCTCxxBridgeexecuteSourceCode()方法來加載。

這里需要注意的是: executeSourceCode() 方法是 RCTCxxBridge的私有方法??梢杂眠^ Category 的方式將executeSourceCode()方法暴露出來。

// iOS端代碼示例 - Category暴露私有方法
@interface RCTBridge (MyCustomerBridge)   
 - (void)executeSourceCode:(NSData *)sourceCode sync:(BOOL)sync;
@end
// iOS端代碼示例 - 加載業(yè)務(wù)包
NSURL *businessBundleURL = [[NSBundle mainBundle] URLForResource:@"business" withExtension:@"ios.bundle"];//業(yè)務(wù)包路徑
NSError *error = nil;
NSData *sourceData = [NSData dataWithContentsOfURL:businessBundleURL options:NSDataReadingMappedIfSafe error:&error];
if (error) { 
  return 
}
[bridge.batchedBridge executeSourceCode:sourceData sync:NO];

以上就是React Native 資源包拆分實戰(zhàn)分析的詳細內(nèi)容,更多關(guān)于React Native 資源包拆分的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 關(guān)于react+antd樣式不生效問題的解決方式

    關(guān)于react+antd樣式不生效問題的解決方式

    最近本人在使用Antd開發(fā)時遇到些問題,所以下面這篇文章主要給大家介紹了關(guān)于react+antd樣式不生效問題的解決方式,文中通過圖文以及實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-07-07
  • 在React中強制重新渲染的4 種方式案例代碼

    在React中強制重新渲染的4 種方式案例代碼

    這篇文章主要介紹了在React中強制重新渲染的4 種方式,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2023-12-12
  • React中設(shè)置樣式style方式

    React中設(shè)置樣式style方式

    這篇文章主要介紹了React中設(shè)置樣式style方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • 一文詳解React Redux設(shè)計思想與工作原理

    一文詳解React Redux設(shè)計思想與工作原理

    最近看項目中使用了?Redux,?便嘗試了解一波?Redux?的設(shè)計思想與工作原理,所以本文詳細的給大家介紹了Redux設(shè)計思想與工作原理,需要的朋友可以參考下
    2023-09-09
  • React-three-fiber使用初體驗

    React-three-fiber使用初體驗

    這篇文章主要為大家介紹了React-three-fiber的使用初體驗,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-05-05
  • React框架快速實現(xiàn)簡易的Markdown編輯器

    React框架快速實現(xiàn)簡易的Markdown編輯器

    這篇文章主要為大家介紹了使用React框架實現(xiàn)簡易的Markdown編輯器,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-04-04
  • React使用fullpage.js實現(xiàn)整屏翻頁功能

    React使用fullpage.js實現(xiàn)整屏翻頁功能

    最近筆者在完成一個移動端小項目的過程中需要實現(xiàn)整屏翻頁的效果;調(diào)研完畢之后,最終決定使用pullPage.js實現(xiàn)此功能,fullPage.js使用起來比較方便,并且官網(wǎng)上也給了在react項目中使用的demo,本文記錄了這個第三方庫的使用過程,感興趣的朋友可以參考下
    2023-11-11
  • react進階教程之異常處理機制error?Boundaries

    react進階教程之異常處理機制error?Boundaries

    在react中一旦出錯,如果每個組件去處理出錯情況則比較麻煩,下面這篇文章主要給大家介紹了關(guān)于react進階教程之異常處理機制error?Boundaries的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-08-08
  • 在React中正確處理異步操作的方法

    在React中正確處理異步操作的方法

    本文全面介紹了在React中處理異步操作的方法、最佳實踐及常見坑點,涵蓋數(shù)據(jù)獲取、延時任務(wù)、用戶交互、動畫和效果等典型場景,并提供了如useEffect、AbortController、ReactQuery等具體實現(xiàn)示例,感興趣的朋友一起看看吧
    2025-03-03
  • React+Electron快速創(chuàng)建并打包成桌面應(yīng)用的實例代碼

    React+Electron快速創(chuàng)建并打包成桌面應(yīng)用的實例代碼

    這篇文章主要介紹了React+Electron快速創(chuàng)建并打包成桌面應(yīng)用,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-12-12

最新評論