Características de ECMAScript 6 disponibles en Node.js 0.12

162

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 --harmonybandera?

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 --harmonybandera 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
Robert Rossmann
fuente
9
"Espero que esta pregunta (y sus respuestas) se conviertan en un resumen completo de las características de ES 6 que ahora están disponibles para los desarrolladores de Node.js." - ¡Lo más probable es que simplemente se convierta en un desorden desorganizado ... eso está tan desactualizado como todos los demás recursos! A menos que usted 1) responda por su cuenta y 2) se tome el tiempo para seleccionar las otras respuestas en la suya. Si está preparado para hacer ese trabajo, entonces podría ser más apropiado hacerlo en un blog.
Stephen C
2
O simplemente cambiar a io.js (que se suministra con una versión mucho más al día V8) y mantener un ojo en la ES6 en io.js página .
Fabrício Matté
2
Tabla de compatibilidad de ES6 curada: kangax.github.io/compat-table/es6
Fabrício Matté
2
@JonathanLonowski interesante, es extraño que no pueda encontrar un problema / PR con respecto al Nodo 0.12. editar: archivó un problema .
Fabrício Matté
1
@RobertRossmann - Cualquiera puede tener un blog. No dudo de tu objetivo. Es solo que no creo que esto funcione ... a menos que alguien (es decir, >> usted <<) haga el >> esfuerzo << para que funcione.
Stephen C

Respuestas:

250

Características sin --harmonybandera:

Creo que eso es todo lo que tenemos sin --harmonybandera.

Características con --harmonybandera:

Creo que eso es todo. Tal vez si olvidé algo, lo agregaré más tarde a la lista.

alexpods
fuente
8
Este es exactamente el tipo de respuesta que esperaba obtener: ¡limpio y con enlaces a documentos / ejemplos! Puntos extra por enumerar características bajo la --harmonybandera. :)
Robert Rossmann
2
Las plantillas de cadenas están fuera con o sin --harmony? ¿Como en la ${varname}sintaxis de cadena de tick posterior ?
Sukima
55
@Sukima Node v0.12 no admite cadenas de plantillas , ni con --harmonybandera, ni sin ella. Pero los iojs apoya sin necesidad de banderas.
alexpods
1
¿Tiene nodejs esto documentado en alguna parte? Es muy útil.
Justin Hamade
1
@ JonRed Quizás su ejecución falló por otra razón, no por una constante. Lo acabo de probar y mi carrera funciona bastante bien.
alexpods
4

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.

$ node -p process.versions.v8
4.6.85.31

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 .

pspi
fuente