在我的项目中,我使用的是React和Babel,因此我使用了一些ES6功能,但主要是React使用的功能。 Webstorm让我可以选择将我的语法标记为ES6或JSX Harmony,我感到困惑。
我想我知道ES6 / ES2015是什么以及如何在编译器中使用它,例如。巴贝尔。
难题部分是JSX / JSX Harmony。我知道React使用“JSX”但是:
这与here的JSX相同吗?如果没有,WebXorm中的JSX Harmony选项意味着哪个JSX?
我已经看到了here提到的兼容性页面,并且知道JSX Transformer仅支持ES6的一小部分,但显然Babel支持JSX作为ES6支持的补充,因此JSX似乎不仅仅是ES6子集......如果是这样,JSX React或JSX Harmony的哪些功能不属于ES6规范?
关于问题1,我确定,这是两个完全不同的事情。但是什么是JSX Harmony呢?
回答我自己的问题,Webstorm JSX Harmony最有可能提到React JSX Compiler支持的语法,并带有--harmony
标志 - 增加了一点ES6支持。
答案 0 :(得分:10)
不,这不是你提到的JSX。这是this one。
JSX是ECMAScript的类似XML的语法扩展,没有任何定义 语义。它不是由引擎或浏览器实现的。
JSX并不打算将ES6功能转换为ES5,因此,它只实现了一些最有用的功能来帮助模板化代码。
如果您今天要使用ES6,则必须使用Babel(首选)或Traceur将代码转换为ES5,然后您可以使用现有的大部分功能。如果你想要一个更强大的转换器,它也有类型定义,你可以看看Typescript。
答案 1 :(得分:10)
不,它不是同一个jsx。我知道有两种叫做JSX的语言:
React.js的模板语言
一种静态类型编程语言,可编译为javascript。
这两种语言与XML和C ++不同。
您正在寻找的JSX来自:https://github.com/facebook/react,可以从这里通过npm安装:https://www.npmjs.com/package/react-tools
JSX编程语言不会编译React JSX模板。