191 votes

Que fait `node --harmony` ?

Une application node m'a demandé d'exécuter node avec un drapeau d'harmonie, comme :

node --harmony app.js

Qu'est-ce que ce drapeau d'harmonie ? Que fait-il et pourquoi l'application ne peut-elle pas fonctionner sans lui ?

J'ai essayé de regarder les options de la ligne de commande du nœud ( node --help ), mais il ne fournit pas non plus de détails. Les documents de Node n'ont pas été d'une grande aide non plus.

143voto

theabraham Points 3602

Dactylographie man node a ceci sur le drapeau de l'harmonie :

 --harmony_typeof (enable harmony semantics for typeof)
       type: bool  default: false
 --harmony_scoping (enable harmony block scoping)
       type: bool  default: false
 --harmony_modules (enable harmony modules (implies block scoping))       
        type: bool  default: false
 --harmony_proxies (enable harmony proxies)       
        type: bool  default: false
 --harmony_collections (enable harmony collections  (sets,  maps,  andweak maps))
       type: bool  default: false 
 --harmony (enable all harmony features (except typeof))
       type: bool  default: false

Alors --harmony est un raccourci permettant d'activer toutes les fonctions d'harmonie (ex. --harmony_scoping , --harmony_proxies etc.) De cet article de blog Il semble qu'harmony permette d'utiliser les nouvelles fonctionnalités de l'ECMAScript 6 dans le langage. La raison pour laquelle votre fichier ne s'exécute pas sans harmony est que app.js utilise probablement des fonctionnalités non rétrocompatibles de la nouvelle norme ECMAScript 6 (comme la délimitation des blocs, les proxies, les ensembles, les cartes, etc.)

65 votes

Il convient de mentionner que Harmony est le nom utilisé pour le nouveau ECMAscript. . L'espace de noms Harmony contient des fonctionnalités qui sont propositions pour cette langue .

1 votes

Merci beaucoup ! Tout s'explique maintenant. A propos, avez-vous une idée de l'équivalent de man node dans Windows ? :)

3 votes

@jsalonen il n'y en a pas, mais vous pouvez le faire > node --v8-options pour obtenir le matériel mentionné ici

14voto

Si vous voulez utiliser les fonctionnalités ECMAScript 6 dans une ancienne version de nodejs, vous pouvez utiliser le drapeau --harmony. La dernière version de node supporte ES6, donc pas besoin de l'option --harmony.

5voto

Ignatius Andrew Points 4089

Comme mentionné dans la documentation de Node, le drapeau --harmony permet d'activer les fonctionnalités non stables mais bientôt stables de ES6.

Le comportement actuel de l'indicateur --harmony sur Node.js est d'activer uniquement les fonctionnalités staged. Après tout, c'est maintenant un synonyme de --es_staging. Comme mentionné ci-dessus, il s'agit de fonctionnalités terminées qui n'ont pas encore été considérées comme stables. Si vous voulez jouer la sécurité, en particulier dans les environnements de production, envisagez de supprimer ce drapeau d'exécution jusqu'à ce qu'il soit livré par défaut sur V8 et, par conséquent, sur Node.js. Si vous gardez cette option activée, vous devez vous préparer à ce que d'autres mises à jour de Node.js brisent votre code si V8 modifie leur sémantique pour suivre de plus près la norme.

5voto

Aravin Points 2180

Toutes les fonctionnalités d'ECMAScript 2015 (ES6) sont réparties en trois groupes : les fonctionnalités expédiées, les fonctionnalités échelonnées et les fonctionnalités en cours :

  • Toutes les fonctions d'expédition que V8 considère comme stables, sont activés par défaut sur Node.js et ne nécessitent PAS de drapeau d'exécution. par défaut sur Node.js et ne nécessitent PAS de drapeau d'exécution.

  • Caractéristiques par étapes qui sont des fonctionnalités presque achevées et qui ne sont pas considérées comme stables par l'équipe V8, nécessitent un drapeau d'exécution : -- harmonie .

  • Caractéristiques en cours peuvent être activés individuellement par leur leur drapeau d'harmonie respectif, bien que cela soit fortement déconseillé, sauf à des fins de test. Note : ces drapeaux sont exposés par V8 et seront potentiellement potentiellement changer sans avis de dépréciation.

source : https://nodejs.org/en/docs/es6/

5voto

Eli Algranti Points 3284

Il permet de créer des modules d'harmonie dans node js : http://wiki.ecmascript.org/doku.php?id=harmony:modules

3 votes

Les modules ne sont qu'une des caractéristiques de l'harmonie.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X