安装 Babel 以与 React 和 JSX 一起使用

Posted

技术标签:

【中文标题】安装 Babel 以与 React 和 JSX 一起使用【英文标题】:Installing Babel to use with React and JSX 【发布时间】:2018-07-03 01:07:41 【问题描述】:

我是 React、Babel 和 JSX 的新手。我正在尝试弄清楚如何安装 Babel,以便它能够在浏览器中使用 React 和 JSX “做正确的事情”。

但是,Babel 的文档假定我已经了解整个 NPM/Node + 许多其他包管理器 + 框架生态系统,而我并不知道。

对于只想使用 Babel 为 React 应用程序编译 JSX 的人,是否有任何文档?我想学习如何在我的机器上(而不是在托管站点上)进行操作,但似乎那里的初学者文档为零。

这些部分的不同版本似乎也不再一起工作,所以我对我需要什么有点困惑。

到目前为止,我已经下载了 React 16.2,并使用 npm 安装了 Babel

npm install --save-dev babel-plugin-transform-react-jsx

并在我的 Babel 所在的文件夹中有一个 node_modules/ 文件夹(似乎是版本 6.24.1,不知道这是否适合 React 16.2),以及我想将我的 htmljavascript 放在哪里。

但现在我被困住了。我不知道如何让 Babel 做我需要的事情。我只想编写一些带有 React + JSX 的 HTML,并让“正确的事情”发生,但找不到任何关于如何做到这一点的文档。

谢谢!

【问题讨论】:

如果你想“只用一些 React + JSX 编写一些 HTML 并让“正确的事情”发生”,请使用 create-react-app,它会完成 babel 和 webpack 的所有配置你。稍后当您想知道幕后发生的事情时,您可以弹出配置。这是使用 create-react-app 指向 What's Included? 的直接链接。 Setup React.js and Babel的可能重复 【参考方案1】:

正如 React 网站中指出的(关于使用脚本添加 JSX 功能):

这种方法非常适合学习和创建简单的演示。但是,它会使您的网站变慢并且不适合生产。

因此它建议改用名为 Babel 的 JSX 预处理器(它的工作方式或多或少类似于 CSS 预处理器的工作方式,因此将 JSX 转换为 javascript)。

唯一的要求是安装 Node.js,这样您就可以下载 Babel 并将其作为 npm 添加到您的项目中。

在链接下方按照所有说明进行操作:

Add react to website

【讨论】:

【参考方案2】:

这不是对您的确切问题的确切答案,但它可能会帮助一些最终来到这里的人。忘记 Babel,跳过额外的编译步骤和项目膨胀,然后:

使用类似React.createElement():

React.createElement('div', className="container", 
    [
        React.createElement('h1', key: "title", 'Greetings'),
        React.createElement('p',  key: "para", 'To the newcomer, ' + this.props.name + '!')
    ]
);

或者使用preact:

h(
    'div',
     id: 'foo' ,
    h('span', null, 'Hello!')
);

在任何一种情况下,都可以将元素嵌套到所需的任何深度。

【讨论】:

【参考方案3】:

啊,我在 https://egghead.io/courses/the-beginner-s-guide-to-reactjs 的 React 初学者指南中找到了答案。

显然有一个独立的 Babel 编译器,你可以在文档的头部链接到它,以及指向 ReactJS 的链接,它“做正确的事”。耶!以下是我正在使用的链接:

<script src="https://unpkg.com/react@16.2.0/umd/react.production.min.js"></script>
<script src="https://unpkg.com/react-dom@16.2.0/umd/react-dom.production.min.js"></script>
<script src="https://unpkg.com/babel-standalone@6.26.0/babel.min.js"></script>

在包含 ReactJS 和 JSX 代码的 script 标签中,必须使用 type=text/babel:

<script type="text/babel">...</script>

我希望这可以帮助其他人开始使用 React 和 JSX。

我猜我最终需要学习如何使用 NPM、NPX、Node、Webpack 和 Babel(可能还有其他工具)来运行生产 ReactJS 代码,但现在我希望这能让我学习 ReactJS 而不必担心所有这些。

【讨论】:

您可能会觉得有用的是codesandbox.io。您编写代码并像热模块重新加载器一样实时更新,但无需进行任何设置。 嗨凯尔 - 谢谢!我已经尝试过这些,但想避免使用沙箱,这样我就可以(最终)弄清楚更多需要什么以及如何设置它。【参考方案4】:

您应该以Create React App (CRA) 开始您的项目。

这是由 React 团队制作的 React 应用初始化程序。它为您完成所有设置(包括 Babel 和 Webpack 配置),并为您的开发环境添加一些非常好的功能。


如果您不想使用 CRA,则需要安装:

babel-core babel-preset-env babel-preset-react

然后在项目的根目录中创建一个文件.babelrc,其中包含:

 "presets": ["env", "react"] 

然后安装并配置Webpack 以运行 Babel 转换。

(或者您也可以使用 babel-cli 手动运行 Babel)。


React 文档略微解决了 Babel 设置问题 here。

他们还建议使用 CRA here。

【讨论】:

我试图弄清楚 create react 应用程序,但它确实需要 npm、npx、node、webpack 和 babel 的知识,以及如何配置所有内容。所以我暂时放弃了这条路......虽然我最终必须学会这一切...... 很抱歉让您有这种感觉。要运行创建反应应用程序,您实际上只需要 Node(NPM 自带)。没有什么可配置的。但我可以理解,所有这些技术一开始都会让人感到不知所措,尤其是如果你只是想尝试 React。希望你能在你的项目中取得成功。祝你好运! :) 谢谢!稍后,当我需要设置构建过程时,我肯定会回到 Create React App ……在我这样做之前,我会了解更多关于 Node 的知识 :-) 我只是希望这些工具有两个指南;一份给专家,一份给初学者,它们实际上解释了你为什么要做什么等等。当我不知道这一切意味着什么时,我不喜欢盲目地遵循说明...... :-) 顺便说一句,第一条指令是使用 npx。我以前没有听说过 npx(我有 npm),我花了一点时间才弄清楚它是什么以及如何安装它(而且我需要升级我的 Node 和 npm 安装才能做到这一点)。 老实说,我这周第一次听说npx,我也有点惊讶!似乎它最近已添加到节点中。但是您仍然可以使用npm 而不是npx。我不知道他们为什么在 Create React App 文档中将 npm 替换为 npx。我同意这有点令人困惑。

以上是关于安装 Babel 以与 React 和 JSX 一起使用的主要内容,如果未能解决你的问题,请参考以下文章

React学习随笔

最详细的jsx和babel的区别

React,babel,webpack 不解析 jsx 代码

Cannot find module '@babel/plugin-transform-react-jsx' 和Cannot find module '@babel/core&

如何使用 Babel-Standalone 在客户端 React JSX 中执行导入/导出

React,Babel,Webpack 不解析 jsx,意外令牌错误 [重复]