Fonctionnalités ECMAScript 6 disponibles dans Node.js 0.12


162

Une nouvelle version stable de Node.js (0.12) a récemment débarqué avec un moteur JavaScript v8 amélioré de Google, v3.28.73 .

Quelles fonctionnalités ECMAScript 6 sont actuellement présentes dans Node.js, sans utiliser l' --harmonyindicateur?

J'ai vérifié plusieurs sites prétendant répertorier les fonctionnalités de l'ES 6, mais ils semblent tous obsolètes - surtout, ce tableau ( mise à jour: maintenant mis à jour avec l'état actuel de Node.js à partir de 0.12 ), car plusieurs des fonctionnalités sont répertoriées comme nécessitant le --harmonydrapeau alors que j'ai trouvé que certains d'entre eux étaient activés par défaut (cartes, ensembles, symboles, pour n'en nommer que quelques-uns). Mise à jour : des tables spécifiques aux nœuds ont depuis été mises à disposition

De plus, essayer de rechercher ces informations sur Google uniquement pour le moteur v8 donne des informations trop à jour - la version actuelle de la v8 est 4.2. * , Ce qui est bien en avance sur ce que Node.js utilise.

J'espère que cette question (et ses réponses) deviendra un résumé complet des fonctionnalités d'ES 6 désormais disponibles pour les développeurs Node.js.

Fonctionnalités ES 6 activées dans Node.js 0.12 Je connais actuellement:

  • Cartes, ensembles / WeakMaps, WeakSets
  • Symboles
  • Object.observe
  • Promesses
  • Nombre
    • .isInteger
    • .isSafeInteger
    • .isNaN
    • .EPSILON
    • .MIN_SAFE_INTEGER
    • .MAX_SAFE_INTEGER
  • Math
    • .clz32
    • .imul
    • .signe
    • .log10
    • .log2
    • .log1p
    • .expm1
    • .matraque
    • .sinh
    • .tanh
    • .acosh
    • .asinh
    • .atanh
    • .trunc
    • .fround
    • .cbrt
    • .hypot

9
"J'espère que cette question (et ses réponses) deviendra un résumé complet des fonctionnalités d'ES 6 qui sont désormais disponibles pour les développeurs Node.js." - Il y a de fortes chances que cela devienne tout simplement un désordre désorganisé ... qui est tout aussi obsolète que toutes les autres ressources !! Sauf si vous 1) vous répondez vous-même et 2) prenez le temps de classer les autres réponses dans les vôtres. Si vous êtes prêt à faire ce travail, il peut être plus approprié de le faire dans un blog.
Stephen C

2
Ou tout simplement passer à io.js (qui est livré avec beaucoup plus à jour la version V8) et garder un oeil sur l' ES6 sur io.js la page .
Fabrício Matté

2
Table de compatibilité ES6 organisée
Fabrício Matté

2
@JonathanLonowski intéressant, il est étrange que je ne trouve pas de problème / PR concernant Node 0.12. edit: a déposé un problème .
Fabrício Matté

1
@RobertRossmann - Tout le monde peut avoir un blog. Je ne doute pas de votre objectif. C'est juste que je ne pense pas que cela fonctionnera ... à moins que quelqu'un (c'est-à-dire >> vous <<) ne fasse l'effort >> de le faire fonctionner.
Stephen C

Réponses:


250

Caractéristiques sans --harmonydrapeau:

Je pense que c'est tout ce que nous avons sans --harmonydrapeau.

Caractéristiques avec --harmonydrapeau:

Je pense que c'est tout. Peut-être que si j'ai oublié quelque chose, je l'ajouterai plus tard à la liste.


8
C'est exactement le genre de réponse que j'espérais obtenir - propre, et avec des liens vers des documents / exemples! Points supplémentaires pour répertorier les fonctionnalités sous le --harmonydrapeau. :)
Robert Rossmann

2
Les modèles de chaîne sont sortis avec ou sans --harmony? Comme dans la ${varname}syntaxe de la chaîne de graduation arrière ?
Sukima

5
@Sukima Node v0.12 ne prend pas en charge les chaînes de modèle , ni avec --harmonyindicateur, ni sans lui. Mais les iojs prend en charge sans avoir besoin de drapeaux.
alexpods

1
Nodejs a-t-il documenté cela n'importe où? C'est très utile.
Justin Hamade

1
@JonRed Peut-être que votre exécution a échoué pour une autre raison, pas à cause d'une constante. Je viens de l'essayer et ma course fonctionne plutôt bien.
alexpods

4

Les fonctionnalités d'ES6 se répercutent sur Node par phases. Node utilise le V8 de Google comme moteur JavaScript. Une fonctionnalité prise en charge dans Node signifie qu'elle doit d'abord être implémentée dans V8, puis l'équipe Node doit l'incorporer dans Node.js.

L'équipe de Google publie une nouvelle version de V8 environ toutes les six semaines, puis c'est à l'équipe Node de la mettre en service.

Les listes de fonctionnalités de langage organisées manuellement sont intéressantes mais peuvent devenir rapidement obsolètes. Node 0.12 n'est plus celui en flux, mais la liste généralement organisée manuellement devient obsolète dès qu'une nouvelle version de Node est déployée.

Voici deux autres façons de vérifier les fonctionnalités prises en charge par une version de Node, sans compter sur une liste statique. Pour plus d'informations et des exemples plus détaillés d'utilisation de ceux-ci, vous pouvez vérifier "Comment vérifier si Node.js prend en charge la fonctionnalité de langage ES 6"

# 1 Easy - Tableau de compatibilité

Une liste générée dynamiquement qui repose sur de petits tests pour confirmer la présence d'une fonctionnalité de langue reste mieux à jour. Une de ces listes populaires est kangax.github.io/compat-table/es6/. Nous nous intéressons uniquement aux fonctionnalités de Node, vous pouvez donc utiliser

http://node.green

qui exploite les mêmes données que le site kangax.

# 2 Hard - version V8 de retour arrière

Node utilise le moteur V8, donc déterminer quelle version de V8 est incluse dans Node nous indique quelles fonctionnalités du langage ES6 sont prises en charge. Vous pouvez savoir quelle version de V8 a été fournie avec Node node -p process.versions.v8.

$ node -p process.versions.v8
4.6.85.31

Ensuite, en utilisant les ressources du projet V8 de Google, vous pouvez trouver les fonctionnalités mises en œuvre dans chaque version. Le projet V8 conserve un suivi des problèmes où vous pouvez trouver ES6 + au-delà des fonctionnalités marquées de l' étiquette d' harmonie .

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.