ES6 i io.js

io.js benytter en moderne versjon av V8. Ved å holde prosjektet oppdatert med de siste versjonene av V8 sørger vi for at nye funksjoner fra JavaScript ECMA-262 spesifikasjonen er tilgjengelig for io.js utviklere innen rimelig tid. I tillegg vil sikkerhets- og ytelesesforbedringer komme raskt.

Versjon 3.3.1 av io.js kommer med V8 versjon 4.4.63.30, denne inkluderer ES6-funksjoner godt forbi versjon 3.28.73 som vil bli levert med Node.js™ 0.12.x.

Slutt på --harmony-flagget

Med Node.js™@0.12.x (V8 3.28+) aktiverte --harmony-flagget ES6-funksjonene completed, staged og in progress (med unntak av proxies som ble skjult ved bruk av --harmony-proxies). Dette resulterte i at ustabile, eller til og med ødelagte, funksjoner som Arrow Functions var like tilgjengelig for utviklere som generators, som hadde veldig få, eller ingen, kjente problemer. Følgelig var det sikrest å aktivere enten et fåtall funksjoner ved å bruke spesifikke harmony-flagg (f.eks. --harmony-generators), eller aktivere dem alle og deretter bare bruke en begrenset delmengde.

Med io.js@1.x (V8 4.1+) forsvinner all denne kompleksiteten. Alle harmony-funksjoner er nå logisk fordelt inn i tre grupper for shipping-, staged- og in progress-funksjoner:

Hvilke ES6-funksjoner følger med io.js som standard (uten å bruke flagg)?

Du kan se en mer detaljert liste med sammenligninger opp mot andre motorer på prosjektsiden til compat-table.

Hvilke ES6-funksjoner ligger i --es_staging-flagget?

Hvilke ES6-funksjoner er under utvikling?

Nye funksjoner legges inn i V8 motoren hele tiden. På generell basis kan man forvente at disse funksjonene blir tilgjengelig i en framtidig io.js utgivelse. Det kan ikke antas noe om hvor lang tid det tar.

Listen over alle funksjoner som er under utvikling og er tilgjengelig i en io.js utgivelse kan listes ut med --v8-options argumentet. Vær oppmerksom på at dette er uferdige funksjoner og muligens funksjoner med feil, bruk dem på eget ansvar:

iojs --v8-options | grep "in progress"

Jeg bruker --harmony-flagg i produksjon. Burde jeg fjerne det?

Den nåværende oppførselen til --harmony-flagget i io.js er å kun aktivere staged-funksjoner. Dette er tross alt nå synonymt med --es_staging. Som nevnt ovenfor er dette fullførte funksjoner som enda ikke er ansett som stabile enda. Hvis du ønsker å være på den sikre siden, kanskje spesielt med tanke på produksjonsmiljøer, bør du vurdere å fjerne dette flagget inntil det leveres som standard av V8 og io.js. Hvis du fortsetter å ha flagget aktivert bør du være forberedt på at nyere io.js-oppgraderinger kan ødelegge koden din dersom V8 endrer semantikken sin til å være mer lik standarden.

Hvordan finner jeg ut hvilken versjon av V8 en gitt io.js versjon har?

io.js har en enkel måte å liste alle avhengigheter/dependencies og versjoner av en gitt binær med det globale objektet process. For å finne-V8 versjonen kan du skrive følgende i terminalen:

iojs -p process.versions.v8