技术架构

image.png

跨平台、热更新

早期的RN版本中打出来的包都只有一个jsbundle,而这个jsbundle里面包含了所有代码(RN源码、第三方库代码和自己的业务代码)

势必带来一个问题,不同业务加载重复的公共包

debug 模式

在debug模式下,RN app是从本地的packager server加载js代码的,加载的地址如下:

iOS: http://localhost:8081/index.bundle?platform=ios&dev=true&minify=false
Android: http://localhost:8081/index.bundle?platform=android&dev=true&minify=false

iOS - AppDelegate.m

  1. - (NSURL *)sourceURLForBridge:(RCTBridge *)bridge
  2. {
  3. #if DEBUG
  4. return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil];
  5. #else
  6. return [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];
  7. #endif
  8. }

rn 加载机制