ECMAScript 2015 (ES6) et au-delà
Node.js est construit sur des versions modernes de V8. En suivant les dernières versions de ce moteur, nous garantissons que les nouvelles fonctionnalités de la spécification JavaScript ECMA-262 sont mises à disposition des développeurs Node.js en temps opportun, ainsi que des améliorations continues des performances et de la stabilité.
Toutes les fonctionnalités d'ECMAScript 2015 (ES6) sont divisées en trois groupes : fonctionnalités « livrées », « en phase » et « en cours » :
- Toutes les fonctionnalités « livrées », que V8 considère comme stables, sont
activées par défaut sur Node.js
et ne nécessitentAUCUNE
flag d'exécution. - Les fonctionnalités « en phase », qui sont des fonctionnalités presque terminées mais non considérées comme stables par l'équipe V8, nécessitent une flag d'exécution :
--harmony
. - Les fonctionnalités « en cours » peuvent être activées individuellement par leur flag harmony respectif, bien que cela soit fortement déconseillé sauf à des fins de test. Remarque : ces flags sont exposés par V8 et peuvent potentiellement changer sans aucun avis de dépréciation.
Quelles fonctionnalités sont livrées par défaut avec quelle version de Node.js ?
Le site web node.green fournit un excellent aperçu des fonctionnalités ECMAScript prises en charge dans les différentes versions de Node.js, basé sur la table de compatibilité de kangax.
Quelles fonctionnalités sont en cours ?
De nouvelles fonctionnalités sont constamment ajoutées au moteur V8. De manière générale, attendez-vous à ce qu'elles soient intégrées à une future version de Node.js, bien que le calendrier soit inconnu.
Vous pouvez répertorier toutes les fonctionnalités en cours disponibles sur chaque version de Node.js en utilisant la commande grep sur l'argument --v8-options
. Veuillez noter qu'il s'agit de fonctionnalités incomplètes et potentiellement défaillantes de V8, utilisez-les donc à vos propres risques :
node --v8-options | grep "in progress"
J'ai configuré mon infrastructure pour utiliser la flag --harmony. Dois-je la supprimer ?
Le comportement actuel de la flag --harmony
sur Node.js est d'activer uniquement les fonctionnalités « en phase ». Après tout, c'est maintenant un synonyme de --es_staging
. Comme mentionné ci-dessus, ce sont des fonctionnalités complètes qui n'ont pas encore été considérées comme stables. Si vous souhaitez jouer la sécurité, en particulier dans les environnements de production, envisagez de supprimer cette flag d'exécution jusqu'à ce qu'elle soit livrée par défaut sur V8 et, par conséquent, sur Node.js. Si vous la conservez activée, vous devez être préparé au fait que des mises à niveau ultérieures de Node.js risquent de casser votre code si V8 modifie sa sémantique pour suivre de plus près la norme.
Comment trouver la version de V8 fournie avec une version particulière de Node.js ?
Node.js fournit un moyen simple de lister toutes les dépendances et leurs versions respectives fournies avec un binaire spécifique via l'objet global process
. Dans le cas du moteur V8, tapez ce qui suit dans votre terminal pour récupérer sa version :
node -p process.versions.v8