当前位置:   article > 正文

React native拆包之 原生加载多bundle(iOS&Android)_react native加载bundle

react native加载bundle

在这之前已经描述了0.57版本的react native如何拆包:https://blog.csdn.net/tyro_smallnew/article/details/83088216(React native拆包的正确姿势),对于原生如何加载多个js包的方法只是简单的描述下,现在开始补坑。

0、rn之jsbundle

    当然我们都知道jsbundle是什么(就是我们打包出来的js包,~~等于没说),直接look look

名字长这样:

其实这里面是个文本,打开长这样:

WHAT?这都是些什么?

第一行是对当前运行环境的定义,是不是开发环境?启动的时间、还有进程环境

第二行是对require、define的支持,还有我们module加载的逻辑也是在第二行实现的

当然还有第三行第四行。。。。。

可以打测试包来展现这些代码原来的样子:(--dev指定为false就不会混淆了)

react-native bundle --platform android --dev false --entry-file index.js --bundle-output ./android/app/src/main/assets/index.android.bundle

  1. var __DEV__=false,__BUNDLE_START_TIME__=this.nativePerformanceNow?nativePerformanceNow():Date.now(),process=this.process||{};process.env=process.env||{};process.env.NODE_ENV="production";
  2. (function (global) {
  3. "use strict";
  4. global.__r = metroRequire;
  5. global.__d = define;
  6. global.__c = clear;
  7. var modules = clear();
  8. var EMPTY = {};
  9. var _ref = {},
  10. hasOwnProperty = _ref.hasOwnProperty;
  11. function clear() {
  12. modules = typeof __NUM_MODULES__ === "number" ? Array(__NUM_MODULES__ | 0) : Object.create(null);
  13. return modules;
  14. }
  15. function define(factory, moduleId, dependencyMap) {
  16. if (modules[moduleId] != null) {
  17. return;
  18. }
  19. modules[moduleId] = {
  20. dependencyMap: dependencyMap,
  21. factory: factory,
  22. hasError: false,
  23. importedAll: EMPTY,
  24. importedDefault: EMPTY,
  25. isInitialized: false,
  26. publicModule: {
  27. exports: {}
  28. }
  29. };
  30. }
  31. function metroRequire(moduleId) {
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/509982
推荐阅读
相关标签
  

闽ICP备14008679号