web-dev-qa-db-fra.com

Fonctionnalités ECMAScript 6 disponibles dans Node.js 0.12

Une nouvelle version stable de Node.js (0.12) a récemment atterri avec un moteur JavaScript v8 de Google mis à niveau, v3.28.73 .

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

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

En outre, essayer de rechercher ces informations uniquement dans Google pour le moteur de la v8 donne des informations trop à jour - la version actuelle de la v8 est 4.2. * , ce qui est très en avance sur ce que Node.js les usages.

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

Fonctions ES 6 activées dans Node.js 0.12 que je connais actuellement:

  • Cartes, Ensembles/WeakMaps, WeakSets
  • Symboles
  • Objet.observer
  • 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
163
Robert Rossmann

Fonctionnalités sans _--harmony_ indicateur:

Je pense que c'est tout ce que nous avons sans drapeau _--harmony_.

Fonctions avec l'indicateur _--harmony_:

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

250
alexpods

Les fonctions de l'ES6 se répercutent par étapes sur Node. 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 la V8, puis que l'équipe Node doit l'intégrer 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 prendre en charge.

Les listes de fonctionnalités linguistiques sélectionnées manuellement sont pratiques mais peuvent rapidement devenir obsolètes. Node 0.12 n'est plus cela en pleine mutation, mais généralement une liste organisée manuellement devient obsolète dès qu'une nouvelle version de Node est déployée.

Il existe deux manières de vérifier les fonctionnalités prises en charge par la version Node, sans recourir à une liste statique. Pour une lecture plus approfondie 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 langue ES 6"

# 1 Easy - Tableau de compatibilité

Une liste générée de manière dynamique qui repose sur de petits tests pour confirmer que la présence d’une fonctionnalité de langue reste mieux mise à jour. Une telle liste populaire est kangax.github.io/compat-table/es6/. Nous nous intéressons uniquement aux fonctionnalités Node, vous pourrez donc utiliser

http://node.green

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

# 2 Hard - Version backtrack V8

Le noeud utilisant le moteur V8, la détermination de la version de V8 incluse dans Node nous indique quelles fonctionnalités du langage ES6 sont prises en charge. Vous pouvez savoir quelle version de V8 était fournie dans Node avec 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 déterminer les fonctionnalités implémentées dans chaque version. Le projet V8 conserve un suivi des problèmes où vous pouvez trouver ES6 + au-delà des fonctions marquées du label harmonie .

4
pspi