it-swarm.com.de

Destrukturierung in Node.JS

Dieses aktuelle Video behauptet, dass die EMCAScript 6-Destrukturierung bereits teilweise in Node.JS implementiert ist. Ich habe verschiedene Beispiele ausprobiert (mit v0.10.12 und dem --harmony flag), wie z

var [a, b] = [1, 2];

und

var {a: a, b: b} = {a: 1, b: 2};

umsonst. Dieses Ticket scheint darauf hinzudeuten, dass die Destrukturierung in V8 noch nicht unterstützt wird.

Ist die Destrukturierung in Node.JS wirklich teilweise implementiert? Mit welchen Codefragmenten kann ich spielen?

75
Randomblue

pdate für Knoten v6 und neuer: Node v6 unterstützt die Destrukturierungszuweisung, ohne dass etwas Besonderes erforderlich ist:

var [a, b] = [1, 2];

Für ältere Versionen von node: Sie können die Liste der unterstützten Harmony-Funktionen abrufen, indem Sie Folgendes eingeben:

node --v8-options | grep harmony

knoten 5.x gibt Ihnen:

--es_staging (enable all completed harmony features)
--harmony (enable all completed harmony features)
--harmony_shipping (enable all shipped harmony fetaures)
--harmony_modules (enable "harmony modules" (in progress))
--harmony_regexps (enable "harmony regular expression extensions" (in progress))
--harmony_proxies (enable "harmony proxies" (in progress))
--harmony_sloppy_function (enable "harmony sloppy function block scoping" (in progress))
--harmony_sloppy_let (enable "harmony let in sloppy mode" (in progress))
--harmony_unicode_regexps (enable "harmony unicode regexps" (in progress))
--harmony_reflect (enable "harmony Reflect API" (in progress))
--harmony_destructuring (enable "harmony destructuring" (in progress))
--harmony_default_parameters (enable "harmony default parameters" (in progress))
--harmony_sharedarraybuffer (enable "harmony sharedarraybuffer" (in progress))
--harmony_atomics (enable "harmony atomics" (in progress))
--harmony_simd (enable "harmony simd" (in progress))
--harmony_array_includes (enable "harmony Array.prototype.includes")
--harmony_tostring (enable "harmony toString")
--harmony_concat_spreadable (enable "harmony isConcatSpreadable")
--harmony_rest_parameters (enable "harmony rest parameters")
--harmony_sloppy (enable "harmony features in sloppy mode")
--harmony_arrow_functions (enable "harmony arrow functions")
--harmony_new_target (enable "harmony new.target")
--harmony_object_observe (enable "harmony Object.observe")
--harmony_spreadcalls (enable "harmony spread-calls")
--harmony_spread_arrays (enable "harmony spread in array literals")
--harmony_object (enable "harmony Object methods")

Die Flagge, die du brauchst, --harmony_destructuring, wurde hinzugefügt in Node 4.1. Derzeit müssen Sie das --harmony_destructuring Flag, um die Funktion zu aktivieren:

$ node --harmony_destructuring
> var {foo} = {foo: 'bar'};
undefined
> foo
'bar'
88
Laurent Perrin

Das kürzlich veröffentlichte node.js v6 verwendet die Version 5.0 von V8, die unterstützt 93% der Sprachfunktionen von ES2015 (sogar 96% in Version 6.1).

Destrukturierungszuweisungen können nun als stabil betrachtet und ohne Flags verwendet werden.

14
birnbaum

Die ES6-Kompatibilitätstabelle zeigt, dass die Destrukturierung in Chrome 45 oder Node= v4) nicht unterstützt wird.

10
Dan Dascalescu