In Node.js 0.12 verfügbare ECMAScript 6-Funktionen

162

Eine neue stabile Version von Node.js (0.12) wurde kürzlich mit der aktualisierten JavaScript-Engine v8 von Google, Version 3.28.73, veröffentlicht .

Welche ECMAScript 6-Funktionen sind derzeit in Node.js vorhanden, ohne das --harmonyFlag zu verwenden?

Ich habe mehrere Websites überprüft, die behaupten, die ES 6-Funktionen aufzulisten, aber alle scheinen veraltet zu sein - am prominentesten diese Tabelle ( Update: jetzt mit dem aktuellen Node.js-Status ab 0.12 aktualisiert ), da einige der Funktionen als aufgeführt sind --harmonyIch benötige das Flag, während einige von ihnen standardmäßig aktiviert sind (Karten, Sätze, Symbole, um nur einige zu nennen). Update : Knotenspezifische Tabellen wurden inzwischen zur Verfügung gestellt

Der Versuch, diese Informationen nur für die v8-Engine zu googeln, liefert zu aktuelle Informationen. Die aktuelle Version v8 ist 4.2. * , Was der von Node.js verwendeten Version weit voraus ist.

Ich hoffe, dass diese Frage (und ihre Antworten) zu einer umfassenden Zusammenfassung der ES 6-Funktionen wird, die Node.js Entwicklern jetzt zur Verfügung stehen.

In Node.js 0.12 aktivierte ES 6-Funktionen Ich kenne derzeit:

  • Maps, Sets / WeakMaps, WeakSets
  • Symbole
  • Object.observe
  • Versprechen
  • Nummer
    • .isInteger
    • .isSafeInteger
    • .isNaN
    • .EPSILON
    • .MIN_SAFE_INTEGER
    • .MAX_SAFE_INTEGER
  • Mathematik
    • .clz32
    • .imul
    • .Zeichen
    • .log10
    • .log2
    • .log1p
    • .expm1
    • .cosh
    • .sinh
    • .tanh
    • .acosh
    • .asinh
    • .atanh
    • .trunc
    • .fround
    • .cbrt
    • .hypot
Robert Rossmann
quelle
9
"Ich hoffe, dass diese Frage (und ihre Antworten) zu einer umfassenden Zusammenfassung der ES 6-Funktionen wird, die Node.js Entwicklern jetzt zur Verfügung stehen." - Die Chancen stehen gut, dass es einfach zu einem unorganisierten Durcheinander wird ... das ist genauso veraltet wie alle anderen Ressourcen !! Es sei denn, Sie 1) antworten selbst und 2) nehmen sich die Zeit, um die anderen Antworten in Ihre zu kuratieren. Wenn Sie bereit sind, diese Arbeit zu erledigen, ist es möglicherweise besser, sie in einem Blog auszuführen.
Stephen C
2
Oder wechseln Sie einfach zu io.js (das mit einer weitaus aktuelleren V8-Version geliefert wird ) und behalten Sie den ES6 auf der Seite io.js im Auge .
Fabrício Matté
2
Kuratierte ES6-Kompatibilitätstabelle: kangax.github.io/compat-table/es6
Fabrício Matté
2
@ JonathanLonowski interessant, es ist seltsam, dass ich kein Problem / PR bezüglich Node 0.12 finden kann. bearbeiten: ein Problem eingereicht .
Fabrício Matté
1
@ RobertRossmann - Jeder kann einen Blog haben. Ich zweifle nicht an deinem Ziel. Es ist nur so, dass ich nicht denke, dass dies funktionieren wird ... es sei denn, jemand (dh >> Sie <<) unternimmt die >> Anstrengung <<, damit es funktioniert.
Stephen C

Antworten:

250

Funktionen ohne --harmonyFlagge:

Ich denke, das ist alles, was wir ohne haben --harmony Flagge haben.

Eigenschaften mit --harmonyFlagge:

Ich denke, das ist alles. Vielleicht, wenn ich etwas vergessen habe - ich werde es später zur Liste hinzufügen.

Alexpods
quelle
8
Dies ist genau die Art von Antwort, auf die ich gehofft hatte - sauber und mit Links zu Dokumenten / Beispielen! Extra Punkte für die Auflistung von Funktionen unter der --harmonyFlagge. :)
Robert Rossmann
2
String-Vorlagen sind mit oder ohne --harmony? Wie in der Back-Tick- ${varname}String-Syntax?
Sukima
5
@Sukima Node v0.12 unterstützt keine Vorlagenzeichenfolgen , weder mit --harmonyFlag noch ohne Flag. Aber iojs unterstützt sie ohne Notwendigkeit irgendwelcher Fahnen.
Alexpods
1
Hat nodejs dies irgendwo dokumentiert? Es ist sehr nützlich.
Justin Hamade
1
@ JonRed Vielleicht ist dein Lauf aus einem anderen Grund fehlgeschlagen, nicht wegen einer Konstante. Ich habe es gerade versucht und mein Lauf funktioniert ziemlich gut.
Alexpods
4

ES6-Funktionen werden in Phasen auf Node übertragen. Node verwendet Googles V8 als JavaScript-Engine. Eine in Node unterstützte Funktion bedeutet, dass sie zuerst in V8 implementiert und dann vom Node-Team in Node.js integriert werden muss.

Das Team von Google veröffentlicht ungefähr alle sechs Wochen eine neue Version von V8, und dann ist es Sache des Node-Teams, sie in Betrieb zu nehmen.

Manuell kuratierte Listen von Sprachfunktionen sind nett, können aber schnell veraltet sein. Knoten 0.12 ist nicht mehr im Fluss, aber normalerweise wird eine manuell kuratierte Liste veraltet, sobald eine neue Version von Knoten eingeführt wird.

Hier sind zwei alternative Möglichkeiten, um zu überprüfen, welche Funktionen eine Node-Version unterstützt, ohne sich auf eine statische Liste zu verlassen. Weitere Informationen und ausführlichere Beispiele für deren Verwendung finden Sie unter "So überprüfen Sie, ob Node.js die ES 6-Sprachfunktion unterstützt".

# 1 Easy - Kompatibilitätstabelle

Eine dynamisch generierte Liste, die sich auf kleine Tests stützt, um das Vorhandensein einer Sprachfunktion zu bestätigen, bleibt auf dem neuesten Stand. Eine solche beliebte Liste ist kangax.github.io/compat-table/es6/. Wir sind nur an Knotenfunktionen interessiert, sodass Sie diese verwenden können

http://node.green

das nutzt die gleichen Daten wie die Kangax-Site.

# 2 Hard - Backtrack V8 Version

Node verwendet die V8-Engine. Wenn Sie also feststellen, welche Version von V8 in Node enthalten ist, erfahren Sie, welche ES6-Sprachfunktionen unterstützt werden. Sie können herausfinden, mit welcher Version von V8 in Node gebündelt wurde node -p process.versions.v8.

$ node -p process.versions.v8
4.6.85.31

Mithilfe der V8-Projektressourcen von Google können Sie dann herausfinden, welche Funktionen in den einzelnen Versionen implementiert sind. Das V8-Projekt verfügt über einen Issue-Tracker, in dem Sie ES6 + über die mit dem Harmony- Label gekennzeichneten Funktionen hinaus finden .

pspi
quelle