node.js - nodejs - node url parse
¿Cómo puedo usar ES7 en nodejs? (3)
Existe este sitio http://node.green/ que muestra el nivel de compatibilidad de diferentes versiones de NodeJS con diferentes versiones de estándares ES.
¿Cómo puedo usar ES7 (ECMAScript 2016) en nodejs ? ¿Cómo puedo usarlo en producción ?
¿Y en qué versión de nodo, no necesito usar ningún módulo para hacer eso?
Cualquier ayuda es apreciada.
Necesitas usar la bandera de armonía por ejemplo:
node --harmony server.js
Nota: esta pregunta fue explícitamente sobre ES2016 (ES7). Vea las actualizaciones a continuación para ES2017 (ES8).
El ES7 tenía solo dos características principales:
Array.prototype.includes
-
**
(el operador de exponenciación)
Ver en la Red de Desarrollo de Mozilla para más información:
- Web/JavaScript/Reference/Global_Objects/Array/includes
- Web/JavaScript/Reference/Operators/Arithmetic_Operators#Exponentiation_(**)
Según node.green, están disponibles en Node desde, respectivamente:
- 5.0 con bandera de armonía y 6.0 sin bandera (Array.prototype.includes)
- 6.5 con bandera de armonía y 7.0 sin bandera (exponenciación)
Ver:
- http://node.green/#ES2016-features-Array-prototype-includes
- http://node.green/#ES2016-features-exponentiation------operator
La exponenciación es la última función de ES7 que se agregó a Node, por lo que si desea utilizar todas las funciones de ES7 sin indicadores, necesita al menos Node 7.0. Si puede usar el indicador --harmony
, entonces puede usar al menos el Nodo 6.5.
La versión 6.x es LTS (Soporte a largo plazo), por lo que es posible que desee preferirlo a la versión 7.x, pero necesitará la marca para usar las funciones de ES7.
En el momento de escribir esto, las versiones actuales de Node son:
- v6.10.3 LTS (Recomendado para la mayoría de los usuarios)
- v7.10.0 actual (últimas características)
Próximamente se lanzará v8.0 LTS; actualmente puede usar las versiones nocturnas de Node 8.0.
Para obtener más información sobre el calendario de lanzamiento, consulte:
Para otras versiones para descargar - ver:
Actualización para ES2017
Respondiendo a la pregunta de los comentarios, async / await es una característica de ES2017 (ES8), no de ES2016 (ES7) de la que se trató esta pregunta. Ver:
- Especificación: ECMAScript Último borrador (ECMA-262) La definición de ''función asíncrona'' en esa especificación.
- Estado: Borrador
- Comentario: Definición inicial en ES2017.
asíncrono / espera en Nodo
Puedes usar async / await en:
- Nodo 7.0 con la bandera
--harmony
- Nodo 7.6 sin ninguna bandera
Para más información ver:
En lugares donde no tienes soporte nativo para async
y await
puedes usar Babel:
o con una sintaxis ligeramente diferente, un enfoque basado en generador como en co
o Bluebird coroutines:
Ver esas respuestas para más información:
- Bloques try / catch con async / await
- node.js ~ construyendo una secuencia encadenada de resuelve la Promesa
- ¿Cómo ejecutar las funciones del generador en paralelo?
- node.js ~ construyendo una secuencia encadenada de resuelve la Promesa
- Usando async / await + Bluebird para promisificar todo
- jQuery: Devolver datos después del éxito de la llamada ajax
Incluyen más información sobre la compatibilidad y posibles soluciones.