Niedawno pojawiła się nowa stabilna wersja Node.js (0.12) z ulepszonym silnikiem JavaScript v8 firmy Google, v3.28.73 .
Jakie funkcje ECMAScript 6 są obecnie obecne w Node.js bez użycia --harmony
flagi?
Sprawdziłem kilka witryn, które twierdzą, że wymieniają funkcje ES 6, ale wszystkie wydają się nieaktualne - przede wszystkim ta tabela ( aktualizacja: teraz zaktualizowana o aktualny stan Node.js od 0.12 ), ponieważ niektóre funkcje są wymienione jako wymagające --harmony
flagi, podczas gdy niektóre z nich są domyślnie włączone (mapy, zestawy, symbole, żeby wymienić tylko kilka). Aktualizacja : Od tego czasu udostępniono tabele specyficzne dla węzła
Ponadto próba wyszukania w Google tych informacji wyłącznie dla silnika v8 daje zbyt aktualne informacje - obecna wersja v8 to 4.2. * , Co znacznie wyprzedza to, czego używa Node.js.
Mam nadzieję, że to pytanie (i odpowiedzi na nie) stanie się kompleksowym podsumowaniem tego, jakie funkcje ES 6 są teraz dostępne dla programistów Node.js.
Funkcje ES 6 włączone w Node.js 0.12 Obecnie wiem o:
- Maps, Sets / WeakMaps, WeakSets
- Symbolika
- Object.observe
- Obietnice
- Numer
- .isInteger
- .isSafeInteger
- .isNaN
- .EPSILON
- .MIN_SAFE_INTEGER
- .MAX_SAFE_INTEGER
- Math
- .clz32
- .imul
- .znak
- .log10
- .log2
- .log1p
- .expm1
- .pałka
- .sinh
- .tanh
- .acosh
- .asinh
- .atanh
- .trunc
- .fround
- .cbrt
- .hypot
źródło
Odpowiedzi:
Funkcje bez
--harmony
flagi:Myślę, że to wszystko, co mamy bez
--harmony
flagi.Funkcje z
--harmony
flagą:--harmony_arrow_functions
w przeciwieństwie do flagi bez potrzebyio.js
)strict mode
Metody ciągów:
includes()
w aktualnej specyfikacji ES6 zastąpiony przez )Proxy (za
--harmony-proxies
flagą)Myślę, że to wszystko. Może jakbym czegoś zapomniał - dodam to później do listy.
źródło
--harmony
flagą. :)--harmony
? Jak w${varname}
składni ciągu znaków zwrotnych ?--harmony
flagą, ani bez niej. Aleiojs
obsługuje je bez potrzeby stosowania jakichkolwiek flag.Funkcje ES6 spływają do węzła w fazach. Node używa Google V8 jako silnika JavaScript. Funkcja obsługiwana w Node oznacza, że najpierw musi zostać zaimplementowana w V8, a następnie zespół Node musi włączyć ją do Node.js.
Zespół w Google wydaje nową wersję V8 mniej więcej co sześć tygodni, a następnie do zespołu Node należy wprowadzenie jej do użytku.
Ręcznie wybierane listy funkcji językowych są ładne, ale mogą szybko się zdezaktualizować. Węzeł 0.12 nie jest już zmienny, ale zazwyczaj ręcznie wybierana lista staje się przestarzała, gdy tylko pojawi się nowa wersja Node.
Oto dwa alternatywne sposoby sprawdzenia, jakie funkcje obsługuje wersja Node, bez polegania na statycznej liście. Więcej informacji i bardziej szczegółowe przykłady ich użycia można znaleźć w sekcji „Jak sprawdzić, czy Node.js obsługuje funkcję języka ES 6”
# 1 Easy - tabela kompatybilności
Dynamicznie generowana lista, która opiera się na małych testach w celu potwierdzenia obecności funkcji językowej, jest lepiej aktualna. Jedną z takich popularnych list jest kangax.github.io/compat-table/es6/. Interesują nas tylko funkcje Node, więc możesz użyć
http://node.green
korzysta z tych samych danych, co witryna kangax.
# 2 Hard - wersja wsteczna V8
Node korzysta z silnika V8, więc określenie, która wersja V8 jest zawarta w Node, informuje nas, jakie funkcje języka ES6 są obsługiwane. Możesz dowiedzieć się, która wersja V8 została dołączona do Node
node -p process.versions.v8
.Następnie korzystając z zasobów projektowych Google V8, możesz sprawdzić, które funkcje są zaimplementowane w każdej wersji. Projekt V8 prowadzi śledzenie problemów, w którym można znaleźć funkcje ES6 + poza funkcjami oznaczonymi etykietą harmonii .
źródło