分析一下metro下两种Bundle格式
目录
- 有几种Bundle格式
- Plain Bundle和RAM Bundle的差异
- Plain Bundle的原理
- Indexed RAM Bundle原理
- File RAM Bundle原理
- iOS和android为什么要搞两套RAM Bundle
有几种Bundle格式
- metro目前提供有
两种
Bundle格式,Plain Bundle和RAM Bundle,打包命令node ./node_modules/react-native/local-cli/cli.js
后跟的第一个参数就是在指定使用哪种打包方式,后面跟bundle就是打Plain Bundle格式的包,后面跟ram-bundle就是打RAM格式的包- 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原理
- 用于iOS
- 所有的js模块,转换成二进制,结构化的放到一个文件里面,文件里面有一块地方,记录每个模块ID的起始位置+长度,解析的时候fopen+fread读取每个模块js代码,然后执行。
- 这种格式只会产生一个Bundle文件,初始化Bridge是会将整个Bundle加载进Bridge,跟Plain Bundle的主要区别在于,它可以按需执行所需要的模块
- 具体格式参考Metro官网的介绍
File RAM Bundle原理
- 用于Android
- 每个模块都单独存储并且命令为
js-modules/${id}.js
,另外还创建了一个UNBUNDLE
文件,内容仅有一个数字0xFB0BD1E5
。UNBUNDLE
文件是在根目录下创建的。- 这种格式的加载和执行跟Indexed RAM Bundle一致
iOS和android为什么要搞两套RAM Bundle
- 其实技术上是可以实现使用一套,之所以要区分是基于性能考虑。
- android读取多个小文件的性能更好,而iOS读取多个小文件的性能不如读取单个大文件,仅此而已
分析一下metro下两种Bundle格式相关推荐
- 早教产品微商怎么做精准引流?早教机构引流活动可以分为线上和线下两种
早教产品微商怎么做精准引流?早教机构引流活动可以分为线上和线下两种 一般来说,根据媒介的不同,早教机构引流活动可以分为线上和线下两种,线上的引流方式有:微信.自媒体.短视频;线下的引流方式有地推和异业 ...
- centos下两种方法安装git
centos 5 64位下两种方法安装git 这里来给大家介绍下编译安装和yum安装git. 系统:centos 5.5 64位 需要的软件包:git-latest.tar.gz epel-r ...
- R语言生存分析COX回归分析实战:两种治疗方法发生肾功能损害的情况
R语言生存分析COX回归分析实战:两种治疗方法发生肾功能损害的情况 目录
- 突击计划——两种温度格式的转换
题目:两种温度格式的转换 #include <stdio.h> //两种温度格式的转换 /* 根据华氏和摄氏温度定义,利用转换公式如下: C=(F-32)/1.8 F=C*1.8+32 * ...
- PDF转CAD的dwg和dxf两种标准格式
大家应该都知道cad有dwg和dxf两种标准格式,我们很多时候要将 pdf 转 cad 格式, pdf 为我们保存文件格式,这样可以保证 cad 文件的完整性和安全性.转换成 CAD 格式分两种标准格 ...
- android登录加密传输,android环境下两种md5加密方式(示例代码)
在平时开发过程中,MD5加密是一个比較经常使用的算法,最常见的使用场景就是在帐号注冊时,用户输入的password经md5加密后,传输至server保存起来.尽管md5加密经经常使用.可是md5的加密 ...
- win7系统的两种硬盘格式mbr和gpt怎么选择?
win7系统的两种硬盘格式mbr和gpt怎么选择?首先这两个格式在日常的使用中没有什么差别,都是可以正常运行的.只不过在一些特别的操作中,不同的格式便利性不一样.比如系统重装的时候,很多都是有指定硬盘 ...
- 《Spark商业案例与性能调优实战100课》第9课:商业案例之通过Spark SQL 下两种不同方式实现口碑最佳和最热门电影比较
<Spark商业案例与性能调优实战100课>第9课:商业案例之通过Spark SQL 下两种不同方式实现口碑最佳和最热门电影比较
- XML的两种常见格式
写了好长时间感觉SAX解析也不难理解,主要是XML文档的格式我们不熟悉,熟悉了XML文档的格式,再来看SAX解析就好多了!所以写了这篇关于XML文档常见的两种格式的详细解读 先来类比一下两种格式: X ...
最新文章
- 【集合论】有序对 ( 有序对 | 有序三元组 | 有序 n 元祖 )
- java 同步方式 lock_java的两种同步方式, Synchronized与ReentrantLock的区别
- Android Settings中显示自定义dialog
- 学python编程_少儿学Python编程的一些思考
- mysql online ddl 5.6_MySQL 5.6的Online DDL功能测试
- SpringBoot 中实现跨域的5种方式
- [已解决问题] Could not find class XXX referenced from method XXX.YYY
- 算法4中 1.4节示例中运行次数的讲解
- 一个珊瑚虫倒下了,千万个珊瑚虫站起来!欢呼吧QQ****下载,不断更新
- pdf转word转换器绿色版
- 11gR2数据库RMAN完全恢复数据库
- taylor+swift纽约公寓_Taylor Swift $1,800 万美元的纽约豪宅到底豪在哪里?
- 在北京拿40K的Java程序员,需要掌握哪些技术栈才能匹配阿里P7?
- 如何快速有效的发散思维?
- 数据库应用之(云安全)
- sqlserver日期减一天_第二人立减1000 | 去厦门吃的地道精彩不重样,没有比这更“惠”吃了!...
- 当我说转行大数据工程师时,众人笑我太疯癫,直到四个月后......
- Windows10如何去除快捷方式的小箭头
- 【解决问题】笔记本换硬盘 BIOS 不能识别
- 离散数学第二章 谓词逻辑