我正在学习React Native。
我找不到适当的Metro Bundler文档。因此,我对它有几个问题。 如其名,它创建一个bundle文件。
- 但是bundle文件位于哪里?
- 这与webpack相同吗?
- 那个bundle文件有什么用?
我正在学习React Native。
我找不到适当的Metro Bundler文档。因此,我对它有几个问题。 如其名,它创建一个bundle文件。
Metro是一个JavaScript打包工具,它接受选项和入口文件,并返回一个包含所有JavaScript文件的JavaScript文件。每次运行React Native项目时,将许多JavaScript文件编译为单个文件。这个编译过程由一个名为Metro的打包工具完成。
回答您的问题:
1> 打包文件位于正在构建应用程序的设备本身上,并以不同的格式存储,例如在Android中创建.bundle的普通打包格式。另一种格式是Indexed RAM bundle,其中文件作为二进制文件存储。
2> Webpack也是一种类似的模块打包工具,它对ReactJS web平台进行打包,并且其模块可以通过浏览器访问。打包过程与Metro类似。
3> 这些打包文件被索引并以特定的数字格式存储,因此在运行时很容易按顺序排列JS文件。
Metro bundler有多个功能,您可以在此处阅读Metro在React Native中的作用:https://medium.com/@rishabh0297/role-of-metro-bundler-in-react-native-24d178c7117e
希望这有所帮助。
Metro 是一个 JavaScript 打包器。它接收一个入口文件和各种选项,然后返回一个包含所有代码及其依赖项的单个 JavaScript 文件。
所以,是的,它是 React Native 应用程序的一种类似于 Webpack 的工具 :)
但是bundle文件在哪里呢?
一旦打包器启动,您可以在 http://localhost:8081/index.bundle?platform=ios&dev=true&minify=false 检查其内容(就像 webpack 一样,它是从内存中提供服务,因此不会写入您项目的文件夹)。
那么该 bundle 文件有什么用处呢?
该文件被安装在设备中以使其代码在那里执行。请记住,当您为 React Native 应用程序编写代码时,您的代码并未“转换”为 Java / Swift / 其他语言。原生模块将向 JavaScript 线程发送事件,而 JS 线程将执行打包的 React Native 代码。
debug
版本。如果你正在运行release
版本(react-native run-<PLATFORM> --variant=release
),那么就不需要了。 - flaky