Funkcje ECMAScript 6 dostępne w Node.js 0.12

162

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 --harmonyflagi?

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 --harmonyflagi, 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
Robert Rossmann
źródło
9
„Mam nadzieję, że to pytanie (wraz z odpowiedziami) stanie się obszernym podsumowaniem tego, jakie funkcje ES 6 są teraz dostępne dla programistów Node.js.” - Jest szansa, że ​​po prostu stanie się chaotycznym bałaganem… który jest tak samo nieaktualny jak wszystkie inne zasoby !! Chyba że 1) odpowiesz samodzielnie i 2) poświęć trochę czasu na umieszczenie innych odpowiedzi w swoich. Jeśli jesteś przygotowany do wykonania tej pracy, bardziej odpowiednie może być wykonanie tego na blogu.
Stephen C
2
Lub po prostu przejść do io.js (których statki o wiele bardziej aktualna wersja V8) i mieć oko na ES6 na io.js stronie .
Fabrício Matté
2
Wyselekcjonowana
Fabrício Matté,
2
@JonathanLonowski ciekawe, to dziwne, że nie mogę znaleźć problemu / PR dotyczącego Node 0.12. edycja: zgłosił problem .
Fabrício Matté
1
@RobertRossmann - Każdy może mieć bloga. Nie wątpię w twój cel. Chodzi o to, że nie sądzę, żeby to zadziałało ... chyba że ktoś (tj. >> ty <<) włoży >> wysiłek <<, aby to zadziałało.
Stephen C

Odpowiedzi:

250

Funkcje bez --harmonyflagi:

Myślę, że to wszystko, co mamy bez --harmonyflagi.

Funkcje z --harmonyflagą:

Myślę, że to wszystko. Może jakbym czegoś zapomniał - dodam to później do listy.

alexpods
źródło
8
To jest dokładnie taka odpowiedź, jaką miałem nadzieję otrzymać - czysta i z linkami do dokumentów / przykładów! Dodatkowe punkty za umieszczenie funkcji pod --harmonyflagą. :)
Robert Rossmann
2
Szablony ciągów są niedostępne z czy bez --harmony? Jak w ${varname}składni ciągu znaków zwrotnych ?
Sukima
5
@Sukima Node v0.12 nie obsługuje ciągów szablonów , ani z --harmonyflagą, ani bez niej. Ale iojs obsługuje je bez potrzeby stosowania jakichkolwiek flag.
alexpods
1
Czy nodejs ma to gdzieś udokumentowane? To jest bardzo użyteczne.
Justin Hamade
1
@JonRed Może twój przebieg nie powiódł się z innego powodu, a nie z powodu stałej. Właśnie tego wypróbowałem i mój bieg działa całkiem nieźle.
alexpods
4

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.

$ node -p process.versions.v8
4.6.85.31

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 .

pspi
źródło