javascript - nodejs - ¿Qué hace `node--harmony`?
nodejs documents (4)
Una aplicación de nodo me ha requerido que ejecute un nodo con una bandera de armonía, como:
node --harmony app.js
¿Qué es esta bandera de armonía? ¿Qué hace y por qué la aplicación no puede funcionar sin él?
Intenté investigar las opciones de la línea de comando del node --help
( node --help
), pero tampoco proporciona ningún detalle. Los documentos de nodo tampoco fueron de ninguna ayuda.
Como se menciona en la Documentación del nodo, la bandera de armonía activa las características no estables pero pronto estable de ES6
El comportamiento actual de la bandera --harmony en Node.js es habilitar funciones por etapas solamente. Después de todo, ahora es un sinónimo de --es_staging. Como se mencionó anteriormente, estas son características completas que aún no se han considerado estables. Si quieres jugar seguro, especialmente en entornos de producción, considera eliminar este indicador de tiempo de ejecución hasta que se envíe por defecto en V8 y, en consecuencia, en Node.js. Si mantiene esto habilitado, debe estar preparado para futuras actualizaciones de Node.js para romper su código si V8 cambia su semántica para seguir más de cerca el estándar.
El man node
tipear man node
tiene esto en la bandera de armonía:
--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
Entonces, --harmony
es un atajo para habilitar todas las características de armonía (p --harmony_scoping
Ej --harmony_scoping
, --harmony_scoping
, --harmony_proxies
, etc.). De esta publicación de blog , parece que la armonía habilita nuevas características de ECMAScript 6 en el lenguaje. La razón por la que su archivo no se ejecutará sin armonía se debe a que app.js
probablemente esté utilizando características no compatibles con versiones anteriores del nuevo estándar ECMAScript 6 (como el alcance del bloque, proxies, conjuntos, mapas, etc.)
Permite módulos de armonía en el nodo js: http://wiki.ecmascript.org/doku.php?id=harmony:modules
Si desea ejecutar las funciones de ECMAScript 6 en la versión anterior de nodejs, puede usar la bandera --harmony. La última versión del nodo es compatible con ES6, por lo que no es necesario