目录

  • 有几种Bundle格式
  • Plain Bundle和RAM Bundle的差异
  • Plain Bundle的原理
  • Indexed RAM Bundle原理
  • File RAM Bundle原理
  • iOS和android为什么要搞两套RAM Bundle

有几种Bundle格式

  1. metro目前提供有两种Bundle格式,Plain Bundle和RAM Bundle,打包命令node ./node_modules/react-native/local-cli/cli.js后跟的第一个参数就是在指定使用哪种打包方式,后面跟bundle就是打Plain Bundle格式的包,后面跟ram-bundle就是打RAM格式的包
  2. RAM Bundle针对不同的平台有不同的处理,在iOS上使用的是Indexed RAM bundle,在android平台上使用的是File RAM bundle

Plain Bundle和RAM Bundle的差异

在 react-native 执行 JS 代码之前,必须将代码加载到内存中并进行解析。如果你加载了一个 50MB 的Plain Bundle,那么所有的 50mb 都必须被加载和解析才能被执行。RAM 格式的 Bundle 则对此进行了优化,即启动时只加载 50MB 中实际需要的部分,之后再逐渐按需加载更多的包

Plain Bundle的原理

这是标准的Bundle格式。这个js bundle文件里其实存的是一个自执行函数,参数是一个数组,包含我们所有的模块。初始化Bridge时会加载整个bundle并执行bundle中的所有模块

Indexed RAM Bundle原理

  1. 用于iOS
  2. 所有的js模块,转换成二进制,结构化的放到一个文件里面,文件里面有一块地方,记录每个模块ID的起始位置+长度,解析的时候fopen+fread读取每个模块js代码,然后执行。
  3. 这种格式只会产生一个Bundle文件,初始化Bridge是会将整个Bundle加载进Bridge,跟Plain Bundle的主要区别在于,它可以按需执行所需要的模块
  4. 具体格式参考Metro官网的介绍

File RAM Bundle原理

  1. 用于Android
  2. 每个模块都单独存储并且命令为js-modules/${id}.js,另外还创建了一个UNBUNDLE文件,内容仅有一个数字0xFB0BD1E5UNBUNDLE文件是在根目录下创建的
  3. 这种格式的加载和执行跟Indexed RAM Bundle一致

iOS和android为什么要搞两套RAM Bundle

  1. 其实技术上是可以实现使用一套,之所以要区分是基于性能考虑。
  2. android读取多个小文件的性能更好,而iOS读取多个小文件的性能不如读取单个大文件,仅此而已

分析一下metro下两种Bundle格式相关推荐

  1. 早教产品微商怎么做精准引流?早教机构引流活动可以分为线上和线下两种

    早教产品微商怎么做精准引流?早教机构引流活动可以分为线上和线下两种 一般来说,根据媒介的不同,早教机构引流活动可以分为线上和线下两种,线上的引流方式有:微信.自媒体.短视频;线下的引流方式有地推和异业 ...

  2. centos下两种方法安装git

    centos 5 64位下两种方法安装git 这里来给大家介绍下编译安装和yum安装git.   系统:centos 5.5 64位   需要的软件包:git-latest.tar.gz epel-r ...

  3. R语言生存分析COX回归分析实战:两种治疗方法发生肾功能损害的情况

    R语言生存分析COX回归分析实战:两种治疗方法发生肾功能损害的情况 目录

  4. 突击计划——两种温度格式的转换

    题目:两种温度格式的转换 #include <stdio.h> //两种温度格式的转换 /* 根据华氏和摄氏温度定义,利用转换公式如下: C=(F-32)/1.8 F=C*1.8+32 * ...

  5. PDF转CAD的dwg和dxf两种标准格式

    大家应该都知道cad有dwg和dxf两种标准格式,我们很多时候要将 pdf 转 cad 格式, pdf 为我们保存文件格式,这样可以保证 cad 文件的完整性和安全性.转换成 CAD 格式分两种标准格 ...

  6. android登录加密传输,android环境下两种md5加密方式(示例代码)

    在平时开发过程中,MD5加密是一个比較经常使用的算法,最常见的使用场景就是在帐号注冊时,用户输入的password经md5加密后,传输至server保存起来.尽管md5加密经经常使用.可是md5的加密 ...

  7. win7系统的两种硬盘格式mbr和gpt怎么选择?

    win7系统的两种硬盘格式mbr和gpt怎么选择?首先这两个格式在日常的使用中没有什么差别,都是可以正常运行的.只不过在一些特别的操作中,不同的格式便利性不一样.比如系统重装的时候,很多都是有指定硬盘 ...

  8. 《Spark商业案例与性能调优实战100课》第9课:商业案例之通过Spark SQL 下两种不同方式实现口碑最佳和最热门电影比较

    <Spark商业案例与性能调优实战100课>第9课:商业案例之通过Spark SQL 下两种不同方式实现口碑最佳和最热门电影比较

  9. XML的两种常见格式

    写了好长时间感觉SAX解析也不难理解,主要是XML文档的格式我们不熟悉,熟悉了XML文档的格式,再来看SAX解析就好多了!所以写了这篇关于XML文档常见的两种格式的详细解读 先来类比一下两种格式: X ...

最新文章

  1. 【集合论】有序对 ( 有序对 | 有序三元组 | 有序 n 元祖 )
  2. java 同步方式 lock_java的两种同步方式, Synchronized与ReentrantLock的区别
  3. Android Settings中显示自定义dialog
  4. 学python编程_少儿学Python编程的一些思考
  5. mysql online ddl 5.6_MySQL 5.6的Online DDL功能测试
  6. SpringBoot 中实现跨域的5种方式
  7. [已解决问题] Could not find class XXX referenced from method XXX.YYY
  8. 算法4中 1.4节示例中运行次数的讲解
  9. 一个珊瑚虫倒下了,千万个珊瑚虫站起来!欢呼吧QQ****下载,不断更新
  10. pdf转word转换器绿色版
  11. 11gR2数据库RMAN完全恢复数据库
  12. taylor+swift纽约公寓_Taylor Swift $1,800 万美元的纽约豪宅到底豪在哪里?
  13. 在北京拿40K的Java程序员,需要掌握哪些技术栈才能匹配阿里P7?
  14. 如何快速有效的发散思维?
  15. 数据库应用之(云安全)
  16. sqlserver日期减一天_第二人立减1000 | 去厦门吃的地道精彩不重样,没有比这更“惠”吃了!...
  17. 当我说转行大数据工程师时,众人笑我太疯癫,直到四个月后......
  18. Windows10如何去除快捷方式的小箭头
  19. 【解决问题】笔记本换硬盘 BIOS 不能识别
  20. 离散数学第二章 谓词逻辑

热门文章

  1. 智合同丨正规劳动合同书怎么签
  2. macOS brew 更新后Python 2找不到md5
  3. 强制 code review:reviewboard+svn 的方案
  4. 浅谈技术难度与公司收益
  5. PowerPCB Modeless Commands(或者PowerPCB快捷键命令)
  6. linux设置时间夏令时,Linux夏令时是怎么调整的
  7. 用遗传算法加强足球游戏的人工智能
  8. 今日更新【东北大学】初试复试资料分享(附考研群)
  9. 春节电影:万达电影+芒果超媒
  10. R语言 迪士尼点评文本挖掘