Mitä on tekeillä Javascript-versioiden kanssa?

Katsaus ECMAScriptiin, Javascript-tulkkeihin ja transpilereihin.

5.1, Ihmiset puhuvat ECMAScriptistä, Javascriptistä, ES5:stä ja ES2015:stä (joka on muuten sama kuin ES6).

Tässä artikkelissa selitän Javascript-maailmaa.

Javascript Yellow – Photo by Joseph Gruenthal on Unsplash

ECMAScript on kielen spesifikaatio, ja Javascript toteuttaa tämän spesifikaation.

Muutaman kerran muutamassa vuodessa ECMAScript julkaisee uuden version. Periaatteessa uusi versio sisältää luettelon uusista ominaisuuksista, jotka pitäisi lisätä.

Uudessa ECMAScript-versiossa voi esimerkiksi olla uusi funktio: add(), joka lisää kaksi lukua.

Siten voit vihdoin lisätä kaksi lukua funktiolla – tiedän, että tämä ei ole hyödyllinen ominaisuus, mutta kärsivällisyyttä esimerkin vuoksi 🙌

const result = add(12, 4);
console.log(result);

Kun tämä on päätetty, on kaikkien Javascript-tulkkien tehtävänä toteuttaa tämä uusi ominaisuus.

Javascript-tulkit

Javascript-tulkki on ohjelma, joka lukee ja suorittaa Javascript-koodia. Kaikki Javascriptiä tukevat selaimet ovat Javascript-tulkkeja.

Selaimien lisäksi on olemassa myös muita Javascript-tulkkeja. NodeJS on ensisijainen esimerkki tulkista, jonka avulla voimme suorittaa JavaScriptiä selaimen ulkopuolella. Se on tulkki, koska se myös lukee ja suorittaa Javascriptiä (sekä tarjoaa API:ita käyttöjärjestelmälle).

Eivät kaikki päivitä selainta, eivätkä kaikki selaimet tue samoja Javascript-ominaisuuksia. Ja tässä kohtaa asiat muuttuvat sotkuisiksi.

Uusin ECMAScript-versio on ES10. Kaikki selaimet eivät kuitenkaan tue tätä uutta ES-versiota, koska niiden on vielä toteutettava uudet ominaisuudet.

Tämän lisäksi monilla ihmisillä on vanhentuneet selainversiot, joten voi kestää jonkin aikaa, ennen kuin kaikki käyttäjät pystyvät suorittamaan nämä uudet hienot ES10-ominaisuudet.

ES-versiot

Tehdään pieni kiertotie ja puhutaan ES-versioista.

Kuten edellisessä kappaleessa mainitsin, ECMAScriptin uusin versio on ES10. Nyt ECMAScript-versioiden nimeämisessä ei ole oikeastaan mitään nimeämiskäytäntöä. Niinpä ES10:stä käytetään myös nimiä ECMAScript2019 ja ES2019.

Lisäksi viimeinen todella suuri muutos kieleen oli ES6, joka ilmestyi vuonna 2015, joten siitä käytetään joskus myös nimitystä ES2015 – Kyllä, se on hämmentävää, tiedän 😌

Koska ES6:n jälkeen kieleen on tehty vain pieniä muutoksia, kaikista ES6:n jälkeisistä versioista käytetään joskus myös nimitystä ESNext.

Javascript Transpilers

Muistatko ongelman, etteivät kaikki selaimet tue uusimpia ES10-ominaisuuksia? Tähän on olemassa ratkaisu. Transpilerit!

Babel on esimerkki Javascript-transpilerista. Babel muuntaa uudemman Javascript-version vanhemmaksi. Näin voit käyttää uusia hienoja ES10-ominaisuuksia ja antaa Babelin kääntää sen laajasti tuettuun ES5-versioon.

Ero NodeJS:n ja selainten välillä

NodeJS ja selain ovat molemmat Javascript-tulkkeja. Riippuen siitä, mikä selainversio ja mikä Node-versio sinulla on, ne voivat tukea samaa ECMAScript-versiota.

Node kuitenkin suoritetaan suoraan tietokoneella. Tämä tarkoittaa, että Noden mukana on useita kirjastoja, jotka eivät toimi selaimessa.

NodeJS:ssä voi esimerkiksi luoda uusia tiedostoja. Selaimessa tämä olisi suuri tietoturvariski, joten se ei ole mahdollista.

Sentähden NodeJS-ohjelmat, jotka on kirjoitettu samalla ECMAScript-versiolla, eivät silti toimi selaimessa, joka tukee samaa versiota.

Vastaa

Sähköpostiosoitettasi ei julkaista.