Recientemente se ha lanzado una nueva versión estable de Node.js (0.12) con un motor JavaScript v8 de Google actualizado, v3.28.73 .
¿Qué características de ECMAScript 6 están presentes actualmente en Node.js, sin usar la --harmony
bandera?
He revisado varios sitios que afirman enumerar las características de ES 6, pero todos parecen estar desactualizados; lo más destacado es esta tabla ( Actualización: ahora actualizada con el estado actual de Node.js a partir de 0.12 ), porque varias de las características se enumeran como requiriendo la --harmony
bandera mientras encontré algunos de ellos habilitados por defecto (Mapas, Conjuntos, Símbolos, por nombrar algunos). Actualización : desde entonces se han puesto a disposición tablas específicas de nodo
Además, intentar buscar en Google esta información únicamente para el motor v8 proporciona información demasiado actualizada: la versión actual de v8 es 4.2. * , Que está bastante por delante de lo que utiliza Node.js.
Espero que esta pregunta (y sus respuestas) se conviertan en un resumen exhaustivo sobre las características de ES 6 que ahora están disponibles para los desarrolladores de Node.js.
Funciones de ES 6 habilitadas en Node.js 0.12 Actualmente conozco:
- Mapas, conjuntos / mapas débiles, conjuntos débiles
- Los símbolos
- Object.observe
- Promesas
- Número
- .isInteger
- .isSafeInteger
- .isNaN
- .EPSILON
- .MIN_SAFE_INTEGER
- .MAX_SAFE_INTEGER
- Matemáticas
- .clz32
- .imul
- .firmar
- .log10
- .log2
- .log1p
- .expm1
- .aporrear
- .sinh
- .tanh
- .acosh
- .asinh
- .atanh
- .trunc
- .fround
- .cbrt
- .hypot
fuente
Respuestas:
Características sin
--harmony
bandera:Creo que eso es todo lo que tenemos sin
--harmony
bandera.Características con
--harmony
bandera:--harmony_arrow_functions
bandera en contraste conio.js
)strict mode
Métodos de cadena:
includes()
en la especificación ES6 real)Proxy (detrás de la
--harmony-proxies
bandera)Creo que eso es todo. Tal vez si olvidé algo, lo agregaré más tarde a la lista.
fuente
--harmony
bandera. :)--harmony
? ¿Como en la${varname}
sintaxis de cadena de tick posterior ?--harmony
bandera, ni sin ella. Pero losiojs
apoya sin necesidad de banderas.Las características de ES6 se filtran hasta Nodo en fases. Node utiliza el V8 de Google como motor de JavaScript. Una característica admitida en Node significa que primero debe implementarse en V8 y luego el equipo de Node debe incorporarla en Node.js.
El equipo de Google lanza una nueva versión de V8 aproximadamente cada seis semanas, y luego depende del equipo Node ponerla en uso.
Las listas de características del lenguaje seleccionadas manualmente son agradables, pero pueden quedar desactualizadas rápidamente. El nodo 0.12 ya no está en flujo, pero por lo general, la lista curada manualmente se vuelve obsoleta tan pronto como se lanza una nueva versión del nodo.
Aquí hay dos formas alternativas de verificar qué características admite una versión Node, sin depender de una lista estática. Para leer más y obtener ejemplos más detallados de su uso, puede consultar "Cómo verificar si Node.js admite la función de idioma ES 6"
# 1 Fácil - tabla de compatibilidad
Una lista generada dinámicamente que se basa en pequeñas pruebas para confirmar la presencia de una función de idioma se mantiene mejor actualizada. Una de estas listas populares es kangax.github.io/compat-table/es6/. Solo nos interesan las funciones de nodo, por lo que puede usar
http://node.green
que aprovecha los mismos datos que el sitio kangax.
# 2 Hard - versión V8 de retroceso
Node usa el motor V8, por lo que determinar qué versión de V8 está incluida en Node nos dice qué características del lenguaje ES6 son compatibles. Puede averiguar qué versión de V8 se incluyó en Node
node -p process.versions.v8
.Luego, utilizando los recursos del proyecto V8 de Google, puede encontrar qué características se implementan en cada versión. El proyecto V8 mantiene un rastreador de problemas donde puede encontrar ES6 + más allá de las características marcadas con la etiqueta de armonía .
fuente