Funzionalità ECMAScript 6 disponibili in Node.js 0.12


162

Una nuova versione stabile di Node.js (0.12) è approdata di recente con un motore JavaScript v8 di Google aggiornato, v3.28.73 .

Quali funzionalità di ECMAScript 6 sono attualmente presenti in Node.js, senza usare il --harmonyflag?

Ho controllato diversi siti che affermano di elencare le funzionalità di ES 6 ma tutte sembrano obsolete - soprattutto, questa tabella ( Aggiornamento: ora aggiornato con lo stato Node.js corrente a partire da 0.12 ), perché molte delle funzionalità sono elencate come richiedendo la --harmonybandiera mentre ne ho trovati alcuni abilitati per impostazione predefinita (Mappe, Set, Simboli, solo per citarne alcuni). Aggiornamento : da allora tabelle specifiche per nodo sono state rese disponibili

Inoltre, provare a cercare su Google queste informazioni esclusivamente per il motore v8 fornisce informazioni troppo aggiornate: l'attuale versione v8 è 4.2. * , Che è molto più avanti rispetto a Node.js.

Le mie speranze sono che questa domanda (e le sue risposte) diventino un riassunto completo su quali funzionalità di ES 6 sono ora disponibili per gli sviluppatori Node.js.

Funzionalità ES 6 abilitate in Node.js 0.12 Conosco attualmente:

  • Mappe, set / mappe deboli, set deboli
  • simboli
  • Object.observe
  • promesse
  • Numero
    • .isInteger
    • .isSafeInteger
    • .isNaN
    • .EPSILON
    • .MIN_SAFE_INTEGER
    • .MAX_SAFE_INTEGER
  • Matematica
    • .clz32
    • .imul
    • .cartello
    • .log10
    • .log2
    • .log1p
    • .expm1
    • .cosh
    • .sinh
    • .tanh
    • .acosh
    • .asinh
    • .atanh
    • .trunc
    • .fround
    • .cbrt
    • .hypot

9
"Le mie speranze sono che questa domanda (e le sue risposte) diventino un riepilogo completo delle funzionalità di ES 6 ora disponibili per gli sviluppatori Node.js." - Le probabilità sono che diventerà semplicemente un disordine disorganizzato ... che è altrettanto obsoleto come tutte le altre risorse !! A meno che tu 1) rispondi a te stesso e 2) prenditi il ​​tempo necessario per curare le altre risposte nelle tue. Se sei pronto a fare quel lavoro, allora potrebbe essere più appropriato farlo in un blog.
Stephen C,

2
O semplicemente passare a io.js (che viene fornito con una versione molto più aggiornata V8) e tenere d'occhio l'ES6 sulla io.js pag .
Fabrício Matté,

2
Tabella di compatibilità ES6 curata: kangax.github.io/compat-table/es6
Fabrício Matté

2
@JonathanLonowski interessante, è strano che non riesca a trovare un problema / PR relativo al nodo 0.12. modifica: ha presentato un problema .
Fabrício Matté,

1
@RobertRossmann - Chiunque può avere un blog. Non sto dubitando del tuo obiettivo. È solo che non penso che funzionerà ... a meno che qualcuno (es. >> tu <<) non faccia lo >> sforzo << per farlo funzionare.
Stephen C

Risposte:


250

Caratteristiche senza --harmonybandiera:

Penso che sia tutto ciò che abbiamo senza --harmonybandiera.

Funzionalità con --harmonybandiera:

Penso sia tutto. Forse se avessi dimenticato qualcosa, lo aggiungerò più tardi all'elenco.


8
Questo è esattamente il tipo di risposta che speravo di ottenere: pulito e con collegamenti a documenti / esempi! Punti extra per elencare le caratteristiche sotto la --harmonybandiera. :)
Robert Rossmann

2
I modelli di stringa sono disponibili con o senza --harmony? Come nella ${varname}sintassi della stringa di spunta posteriore ?
Sukima,

5
@Sukima Node v0.12 non supporta stringhe di modelli , né con --harmonyflag, né senza di essa. Ma iojs li supporta senza bisogno di bandiere.
alexpods

1
Nodejs lo ha documentato ovunque? E 'molto utile.
Justin Hamade,

1
@JonRed Forse la tua corsa è fallita per un altro motivo, non a causa di una costante. L'ho appena provato e la mia corsa funziona abbastanza bene.
alexpods

4

Le funzionalità di ES6 arrivano al Nodo in più fasi. Il nodo utilizza V8 di Google come motore JavaScript. Una funzione supportata in Node significa che prima deve essere implementata in V8 e quindi il team Node deve incorporarla in Node.js.

Il team di Google rilascia una nuova versione di V8 all'incirca ogni sei settimane, quindi spetta al team Node prenderlo in uso.

Gli elenchi curati manualmente delle funzionalità linguistiche sono utili ma possono diventare obsoleti rapidamente. Il nodo 0.12 non è più quello in flusso, ma in genere l'elenco curato manualmente diventa obsoleto non appena viene lanciata una nuova versione di nodo.

Ecco due modi alternativi per verificare quali funzionalità supporta una versione di Nodo, senza fare affidamento su un elenco statico. Per ulteriori letture ed esempi più dettagliati sull'uso di questi, è possibile verificare "Come verificare se Node.js supporta la funzionalità del linguaggio ES 6"

# 1 Facile - tabella di compatibilità

Un elenco generato dinamicamente che si basa su piccoli test per confermare la presenza di una funzionalità linguistica rimane aggiornato. Uno di questi elenchi popolari è kangax.github.io/compat-table/es6/. Siamo interessati solo alle funzionalità del nodo, quindi puoi usarlo

http://node.green

che sfrutta gli stessi dati del sito kangax.

# 2 Hard - backtrack versione V8

Node utilizza il motore V8, quindi determinare quale versione di V8 è inclusa in Node ci dice quali funzionalità del linguaggio ES6 sono supportate. Puoi scoprire con quale versione di V8 è stato raggruppato in Node node -p process.versions.v8.

$ node -p process.versions.v8
4.6.85.31

Quindi, utilizzando le risorse del progetto V8 di Google, puoi trovare quali funzionalità sono implementate in ogni versione. Il progetto V8 mantiene un tracker di problemi in cui è possibile trovare ES6 + oltre alle funzionalità contrassegnate con l' etichetta harmony .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.