JSX vs ES6 / ES2015

时间:2015-09-22 03:47:34

标签: javascript ecmascript-6 webstorm react-jsx

在我的项目中,我使用的是React和Babel,因此我使用了一些ES6功能,但主要是React使用的功能。 Webstorm让我可以选择将我的语法标记为ES6或JSX Harmony,我感到困惑。

我想我知道ES6 / ES2015是什么以及如何在编译器中使用它,例如。巴贝尔。

难题部分是JSX / JSX Harmony。我知道React使用“JSX”但是:

  1. 这与here的JSX相同吗?如果没有,WebXorm中的JSX Harmony选项意味着哪个JSX?

  2. 我已经看到了here提到的兼容性页面,并且知道JSX Transformer仅支持ES6的一小部分,但显然Babel支持JSX作为ES6支持的补充,因此JSX似乎不仅仅是ES6子集......如果是这样,JSX React或JSX Harmony的哪些功能不属于ES6规范?

  3. 编辑:

    关于问题1,我确定,这是两个完全不同的事情。但是什么是JSX Harmony呢?

    编辑2:

    回答我自己的问题,Webstorm JSX Harmony最有可能提到React JSX Compiler支持的语法,并带有--harmony标志 - 增加了一点ES6支持。

2 个答案:

答案 0 :(得分:10)

  1. 不,这不是你提到的JSX。这是this one

      

    JSX是ECMAScript的类似XML的语法扩展,没有任何定义   语义。它不是由引擎或浏览器实现的。

  2. JSX并不打算将ES6功能转换为ES5,因此,它只实现了一些最有用的功能来帮助模板化代码。

    如果您今天要使用ES6,则必须使用Babel(首选)或Traceur将代码转换为ES5,然后您可以使用现有的大部分功能。如果你想要一个更强大的转换器,它也有类型定义,你可以看看Typescript

答案 1 :(得分:10)

不,它不是同一个jsx。我知道有两种叫做JSX的语言:

  1. React.js的模板语言

  2. 一种静态类型编程语言,可编译为javascript。

  3. 这两种语言与XML和C ++不同。

    您正在寻找的JSX来自:https://github.com/facebook/react,可以从这里通过npm安装:https://www.npmjs.com/package/react-tools

    JSX编程语言不会编译React JSX模板。