📢 Nuovo Corso Laravel API disponibile!

Versioni ECMAScript in Node JS

Node.js è costruito su versioni moderne di V8. Mantenendo l’aggiornamento con le ultime versioni di questo motore, ci assicuriamo che le nuove funzionalità della specifica JavaScript ECMA-262 vengano fornite agli sviluppatori di Node.js in modo tempestivo, oltre a miglioramenti continui delle prestazioni e della stabilità.

Tutte le funzionalità di ECMAScript 2015 (ES6) sono divise in tre gruppi per funzionalità consegnate, in fase di sviluppo e in corso:

  • Tutte le funzionalità consegnate, considerate stabili da V8, sono attivate per impostazione predefinita su Node.js e NON richiedono alcun tipo di flag runtime.
  • Le funzionalità in fase di sviluppo, che sono funzionalità quasi completate e non considerate stabili dal team V8, richiedono un flag runtime: --harmony.
  • Le funzionalità in corso possono essere attivate singolarmente dal rispettivo flag harmony, anche se ciò è fortemente sconsigliato a meno che non sia per scopi di test. Nota: questi flag sono esposti da V8 e potrebbero cambiare senza preavviso di deprecazione.

Quali funzionalità sono attivate di default in ciascuna versione di Node.js?

Il sito web node.green fornisce un’ottima panoramica delle funzionalità di ECMAScript supportate in varie versioni di Node.js, basato sulla tabella di compatibilità di kangax.

Quali funzionalità sono in corso?

Nuove funzionalità vengono costantemente aggiunte al motore V8. In generale, aspettati che queste siano incluse in una futura versione di Node.js, anche se il tempismo è sconosciuto.

Puoi elencare tutte le funzionalità in corso disponibili in ogni versione di Node.js cercando l’argomento --v8-options. Si noti che queste sono funzionalità incomplete e potenzialmente non funzionanti di V8, quindi usale a tuo rischio:

Terminal window
node --v8-options | grep "in progress"

Ho configurato la mia infrastruttura per sfruttare il flag —harmony. Dovrei rimuoverlo?

Il comportamento attuale del flag --harmony su Node.js è quello di abilitare solo le funzionalità in fase di sviluppo. Dopo tutto, ora è un sinonimo di --es_staging. Come accennato in precedenza, queste sono funzionalità completate che non sono state considerate stabili ancora. Se vuoi giocare in sicurezza, specialmente in ambienti di produzione, considera di rimuovere questo flag runtime fino a quando non verrà attivato per impostazione predefinita su V8 e, di conseguenza, su Node.js. Se lo mantieni abilitato, devi essere preparato per ulteriori aggiornamenti di Node.js che potrebbero interrompere il tuo codice se V8 cambia la semantica per seguire più da vicino lo standard.

Come posso scoprire quale versione di V8 è inclusa in una particolare versione di Node.js?

Node.js fornisce un modo semplice per elencare tutte le dipendenze e le rispettive versioni che sono incluse in un binario specifico attraverso l’oggetto globale process. Nel caso del motore V8, digita quanto segue nel tuo terminale per recuperare la sua versione:

Terminal window
node -p process.versions.v8