babel在本地反应中起什么作用?

I'm trying to figure out the build process for react native and what exactly it is that both the metro bundler and babeljs do. In particular what allows me to use ES5+ syntax. I'm finding some sources that seem to tell me something different. This source says:

Metro将所有JavaScript代码合并到一个文件中并进行翻译   设备无法理解的任何Javascript代码(例如JSX或某些   较新的javascript语法)

This one says:

React Native使用Babel转换React语法和更新的ES5 +   语法转换成可以在JavaScript环境中运行的代码   不支持这些功能。

So now i'm confused what exactly both do. Also i've found this in the above source (and metro documentation): Metro. The transformation process is described as:

所有模块都通过一个变压器。变压器负责   将模块转换为目标可以理解的格式   平台(例如React Native)。模块的转换发生在   根据您拥有的核心数量进行并行处理。

这听起来完全像是babel应该对我进行的翻译,还是有些不同?对此,Appart感到困惑,即捆绑过程的解析部分是如何工作的,以及它在与其他步骤并行的过程中是如何工作的,但这可能是另一个问题。

评论
  • ueaque
    ueaque 回复

    Babel是翻译者。什么?!?好吧,编译器是一种工具,它可以读取以一种编程语言编写的源代码,并以另一种语言生成等效的代码。 React Native使用Babel将React语法和更新的ES5 +语法转换为可以在不支持这些功能的JavaScript环境中运行的代码。

    开箱即用,Babel不会执行任何操作。它基本上会解析代码,然后再次生成相同的代码。 为了引入一些魔术,您需要集成插件(或预设,一组插件)以使Babel能够执行任何操作。

    可以使用yarn(或npm)(JavaScript的软件包管理器)将插件和预设作为软件包安装,在名为package.json的文件中声明它们。软件包可用作依赖项或devDependencies。区别取决于它们的用法。实际上,尽管在运行时需要前者,但在开发过程中需要后者。