Spojrzenie na ECMAScript, interpretery języka Javascript i transpilery.
Świat Javascript może być mylący. Ludzie mówią o ECMAScript, Javascript, ES5, i ES2015 (który jest tym samym co ES6 przy okazji).
W tym artykule, wyjaśnię krajobraz Javascript.
ECMAScript jest specyfikacją języka, a Javascript implementuje tę specyfikację.
Co kilka lat ECMAScript wydaje nową wersję. Zasadniczo nowa wersja zawiera listę nowych funkcji, które powinny zostać dodane.
Na przykład w nowej wersji ECMAScript może być nowa funkcja: add()
, która dodaje dwie liczby.
W ten sposób można w końcu dodać 2 liczby za pomocą funkcji – wiem, że nie jest to przydatna funkcja, ale wytrzymaj ze mną dla dobra przykładu 🙌
const result = add(12, 4);
console.log(result);
Gdy to zostanie postanowione, do wszystkich interpretatorów Javascript należy zaimplementowanie tej nowej funkcji.
Interpretatory Javascript
Interpretator Javascript to program, który będzie czytał i wykonywał kod Javascript. Wszystkie przeglądarki, które obsługują Javascript są interpreterami Javascript.
Oprócz przeglądarek, istnieją również inne interpretery Javascript. NodeJS jest podstawowym przykładem interpretera, który pozwala nam wykonywać JavaScript poza przeglądarką. Jest to interpreter, ponieważ również odczytuje i wykonuje Javascript (jak również dostarcza API do systemu operacyjnego).
Nie każdy aktualizuje swoją przeglądarkę i nie wszystkie przeglądarki obsługują te same funkcje Javascript. I tu właśnie robi się bałagan.
Najnowsza wersja ECMAScript to ES10. Jednak nie wszystkie przeglądarki obsługują tę nową wersję ES, ponieważ wciąż muszą wdrożyć nowe funkcje.
Co więcej, jest wiele osób z przestarzałymi wersjami przeglądarki, więc może minąć trochę czasu, zanim wszyscy użytkownicy będą mogli wykonać te nowe fantazyjne funkcje ES10.
Wersje ES
Zróbmy mały objazd i porozmawiajmy o wersjach ES.
Jak wspomniałem w poprzedniej sekcji, najnowszą wersją ECMAScript jest ES10. Teraz nie ma tak naprawdę konwencji nazewnictwa, jeśli chodzi o wersje ECMAScript. Więc ES10 jest również nazywany ECMAScript2019 i ES2019.
Co więcej, ostatnia naprawdę duża zmiana w języku była z ES6, który wyszedł w 2015 roku, więc jest czasami również określany jako ES2015 – Tak to jest mylące, wiem 😌
Ponieważ istnieją tylko niewielkie zmiany w języku po ES6 wszystkie wersje po ES6 są czasami również określane jako ESNext.
Javascript Transpilers
Pamiętasz problem z tym, że nie wszystkie przeglądarki wspierają najnowsze funkcje ES10? Jest na to rozwiązanie. Transpilery!
Babel jest przykładem transpilera Javascript. Babel przekonwertuje nowszą wersję Javascript na starszą. W ten sposób możesz używać nowych, wymyślnych funkcji ES10 i pozwolić Babelowi przetransponować je do szeroko wspieranej wersji ES5.
Różnica między NodeJS a przeglądarkami
NodeJS i przeglądarki są interpreterami Javascript. W zależności od tego, którą wersję przeglądarki i którą wersję węzła posiadasz, mogą one obsługiwać tę samą wersję ECMAScript.
Jednakże Node jest wykonywany bezpośrednio na komputerze. Oznacza to, że istnieje wiele bibliotek dołączonych do Node, które nie będą działać w przeglądarce.
Na przykład w NodeJS możesz tworzyć nowe pliki. W przeglądarce byłoby to poważne zagrożenie bezpieczeństwa, więc nie jest to możliwe.
To dlatego programy NodeJS napisane w tej samej wersji ECMAScript nadal nie będą działać w przeglądarce, która obsługuje tę samą wersję.
.