Question

Est-il possible d'activer les proxys EcmaScript 6 Harmony dans nodejs ?Si oui, quels sont les avantages et les inconvénients ?Et existe-t-il une documentation sur la façon de les utiliser ?Merci !

Était-ce utile?

La solution

Noeud appelant avec node --harmony-proxies devrait faire l'affaire.

Avantages:les proxys sont une fonctionnalité très puissante lorsque vous en avez vraiment besoin.

Les inconvénients:les proxys sont une fonctionnalité beaucoup trop puissante lorsque vous n'en avez pas besoin (ce qui devrait être la plupart du temps).En outre, la mise en œuvre doit toujours être considérée comme expérimentale.

Côté documentation, tout ce qu'il y a vraiment atm c'est le wiki Harmony, en particulier cette page, qui reflète l'implémentation actuelle des proxys dans la V8 (et donc dans node) :

http://wiki.ecmascript.org/doku.php?id=harmony:proxies

Autres conseils

je recommande harmonie-réfléchir, ce qui facilite par ex.configurer les pièges get/set :

MISE À JOUR attention, ci-dessous se trouve CoffeeScript

require 'harmony-reflect'

handler =

  get: ( target, name ) ->
    console.log 'get' name
    return target[ name ]

  set: ( target, name, value ) ->
    console.log 'set' name
    target[ '%is-clean' ] = no if value isnt target[ name ]
    if value is undefined then delete target[ name ]
    else                       target[ name ] = value
    return value

clean = ( x ) ->
  x[ '%is-clean' ] = yes
  return x

p = Proxy {}, handler
p[ 'a' ] = 1
p[ 'b' ] = undefined
console.log p[ 'a' ], p[ 'b' ]
console.log "c" of p, p[ 'c' ]
console.log p
clean p
p[ 'a' ] = 1
console.log p
p[ 'a' ] = 42
console.log p

ce qui précède est le code initial pour effectuer la « persistance transparente des objets » en JavaScript.en utilisant harmony-reflect, il devient trivial de faire en sorte que tout get et set les actions sur un objet sont interceptées. Dans cette démo, nous définissons un %is-clean attribut afin que nous puissions tester si les membres de l'objet ont été modifiés, et nous supprimons également les membres qui ont été définis comme non définis.

Vous pouvez utiliser PIMPED-PROXY, une implémentation légère de procuration, de la déclaration de déclaration plus facile et d'ES5 compatible. Contrairement au proxy natif, il ne peut que des propriétés de proxy connues au moment de la création.

https://github.com/boulangerie/pimped-proxy

Proxy est désormais disponible nativement dans les versions Node >= 6.

Les proxy d'harmonie ne fonctionneront pas tout cela bien pour Nodejs car ils sont des appels de fonction synchrones efficacement.C'est-à-dire que vous ne pouvez pas implémenter une méthode de proxy qui est asynchronitaire.

Voir ce référentiel GitHub pour des exemples: https://github.com/mschwartz/silkjs-harmony

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top