我真的需要Babel或其他的转发器来使用ES6和React吗?

use*_*521 22 javascript transpiler ecmascript-6 reactjs babeljs

我真的需要Babel或其他的转发器在React中使用ES6吗?

我在看图表https://kangax.github.io/compat-table/es6/

好像我目前的浏览器Chrome(最新稳定版)几乎支持所有ES6功能......

如果我可以使用没有Babel的ES6,我应该怎么做?

Ker*_*men 16

如果你想:

  • 使用modules(带require()import ...)
  • 使用 JSX
  • 支持很多浏览器
  • 使用更多高级功能(async/await),一些仍然在提案中(装饰器,类属性 ..)

您必须使用Babel确保每个人都能够运行您的代码,否则您可以在没有它的情况下进行开发.

  • ES6是否支持模块(导入)? (4认同)
  • 将JSX与原生ES6功能进行比较会产生误导.如果您的浏览器支持ES6,它可以执行模块,需要,异步等.我觉得你的anwser正在加入错误的信息,你需要一个转换器来使用ES6 (4认同)
  • 不,他问他是否真的需要 babel 才能在 React 中使用 ES6。我回答(2 年前)他需要它,尤其是对于 jsx。 (4认同)
  • 虽然信息丰富,这是一个伟大的**非答案**的问题.他问*如何使用没有Babel的ES6.不是*他是否应该. (2认同)

Sco*_*haw 13

绝对可以并且确实使用ES6 W/O babel.所有主流浏览器本身都支持绝大多数功能(参见CanIUse.com),实际上唯一不支持的主要功能是模块的导入/导出.

对于这些,您仍然必须使用HTML中的脚本标记以正确的顺序手动导入模块.仅客户端(节点需要模块).

但是,请注意这对于dev来说很好,但是在生产中你需要连接并最小化所有JS到一个模块,所以使用Babel/Webpack或Babel/Browserify样式工具链可能最终会在你最终的位置.

  • 那<script type ='module'src ='your.js'> </ script>呢?我已经尝试过了,它允许在your.js中使用导入/导出,浏览器也可以导入/导出模块。 (2认同)
  • 当然,截至 2017 年 10 月,Google 和 Firefox 支持基于标准的本机使用“import { moduleName } from 'filename.js';” 句法。ECMAScript 现在的美妙之处在于它的发展速度有多快。填充程序和转译器都是借来的时间 - 例外的是最终可部署应用程序的生成。 (2认同)

Dyl*_*lan 6

没有babel,您将获得所链接图表的兼容性。但是请记住,如果要使用JSX,则需要使用babel进行转换。

  • 有一个 transform-react-jsx babel 插件,它允许只转换 JSX(到 React.createElement() )并保持其余代码不变。这将是在浏览器中使用 ES6 和 React 的方式。但是是的,它仍然是 babel 插件 :) (3认同)