web-dev-qa-db-fra.com

JSX vs ES6 / ES2015

Dans mon projet, j'utilise React et Babel, donc j'utilise certaines fonctionnalités ES6 mais principalement celles utilisées par React. Webstorm me donne la possibilité de marquer ma syntaxe comme ES6 ou JSX Harmony et j'ai obtenu confus.

Je pense que je sais ce qu'est ES6/ES2015 et comment l'utiliser avec un compilateur, par exemple. Babel.

L'identifiant de la partie difficile JSX/JSX Harmony. Je sais que React utilise "JSX" mais:

  1. Est-ce le même JSX que ici ? Sinon, quel JSX signifie JSX Harmony dans Webstorm?

  2. J'ai vu la page de compatibilité mentionnée ici et je sais que JSX Transformer ne prend en charge qu'une petite partie d'ES6 mais aussi qu'apparemment Babel prend en charge JSX en plus du support ES6, donc JSX semble être plus qu'un sous-ensemble ES6. .. Si oui, quelles sont les fonctionnalités de JSX React ou JSX Harmony ne font pas partie des spécifications ES6?

ÉDITER:

Quant à la question 1, je suis sûr que ce sont deux choses complètement différentes. Mais qu'est-ce que JSX Harmony alors?

EDIT 2:

Pour répondre à ma propre question, Webstorm JSX Harmony fait très probablement référence à la syntaxe prise en charge par React JSX Compiler with --harmony flag on - ajout d'un peu de support ES6.

19
konrad
  1. Non, ce n'est pas le JSX que vous avez mentionné. C'est celui-ci .

    JSX est une extension de syntaxe de type XML pour ECMAScript sans aucune sémantique définie. Il n'est PAS destiné à être implémenté par des moteurs ou des navigateurs.

  2. JSX n'a ​​pas l'intention de transpiler les fonctionnalités d'ES6 vers ES5, donc, il implémente uniquement certaines des fonctionnalités les plus utiles pour aider avec le code de modèle.

    Si vous souhaitez utiliser ES6 aujourd'hui, vous devez utiliser Babel (préféré) ou Traceur pour transpiler votre code vers ES5, puis vous pouvez utiliser la plupart des fonctionnalités déjà disponibles. Si vous voulez un transpilateur encore plus puissant, qui possède également des définitions de type, vous pouvez jeter un œil à TypeScript .

10
Buzinas

Non, ce n'est pas le même jsx. Il y a deux langues appelées JSX que je connais:

  1. Le langage de template pour React.js

  2. Un langage de programmation typé statiquement qui se compile en javascript.

Les deux langages sont aussi différents que XML et C++.

Le JSX que vous recherchez est d'ici: https://github.com/facebook/react et peut être installé via npm à partir d'ici: https: //www.npmjs. com/package/react-tools

Le langage de programmation JSX ne compilera pas React modèles JSX.

10
slebetman