web-dev-qa-db-fra.com

Déstructuration dans Node.JS

Cette vidéo récente affirme que la déstructuration d'EMCAScript 6 est déjà partiellement implémentée dans Node.JS. J'ai essayé divers exemples (en utilisant la v0.10.12 et le --harmony flag), comme

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

et

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

en vain. Ce ticket semble suggérer que la déstructuration n'est pas encore supportée en V8.

La déstructuration est-elle vraiment partiellement implémentée dans Node.JS? Avec quels extraits de code puis-je jouer?

75
Randomblue

Mise à jour pour le nœud v6 et plus récent: Node v6 prend en charge l'affectation de la déstructuration sans rien de spécial nécessaire:

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

Pour les anciennes versions de node: Vous pouvez obtenir la liste des fonctionnalités d'harmonie prises en charge en tapant:

node --v8-options | grep harmony

le noeud 5.x vous donnera:

--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")

Le drapeau dont vous avez besoin, --harmony_destructuring, a été ajouté dans Node 4.1. Actuellement, vous devrez passer le --harmony_destructuring drapeau pour activer la fonction:

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

Le dernier node.js v6 récemment publié utilise la version 5.0 de V8 qui est supportant 93% des fonctionnalités du langage ES2015 (même 96% dans la v6.1).

Les affectations de déstructuration peuvent désormais être considérées comme stables et peuvent être utilisées sans aucun indicateur.

14
birnbaum

Le tableau de compatibilité ES6 montre que la déstructuration n'est pas prise en charge dans Chrome 45, ou Node v4).

10
Dan Dascalescu