Activer les proxys Harmony dans nodejs
-
11-12-2019 - |
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 !
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) :
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.
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