node.js - green - nodejs es7 support
Habilitar proxies de Harmony en nodejs (5)
Harmony Proxies no funcionará tan bien para los nodejs porque son efectivamente llamadas de función de tipo síncrono. Es decir, no puede implementar un método proxy que sea asíncrono.
Consulte este repositorio de GitHub para ver ejemplos: https://github.com/mschwartz/SilkJS-Harmony
¿Es posible habilitar los proxies Harmony de EcmaScript 6 en nodejs? Si es así, ¿cuáles son los pros y los contras? ¿Y hay alguna documentación sobre cómo usarlos? Gracias !
Puede usar pimped-proxy, que es una implementación liviana de proxies, lo que hace que la declaración sea más fácil y compatible con ES5. A diferencia del Proxy nativo, solo puede hacer proxy de las propiedades conocidas en el momento de la creación.
Recomiendo harmony-reflect , lo que facilita, por ejemplo, la configuración de capturas get / set:
ACTUALIZACIÓN cuidadosa, a continuación es 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
lo anterior es el código inceptivo para hacer ''persistencia de objeto transparente'' en JavaScript. Al utilizar harmony-reflect
, se vuelve trivial hacer que todas las acciones get
y set
en un objeto sean interceptadas. En esta demostración, establecemos un atributo %is-clean
para que podamos probar si los miembros del objeto han sido cambiados, y también eliminar miembros que se han establecido en indefinido.
Proxy
ahora está disponible de forma nativa en las versiones de Nodo> = 6.
Invocar nodo con node --harmony-proxies
debería hacer el truco.
Pros: los proxies son una característica muy poderosa cuando realmente los necesitas.
Contras: los proxies son una característica demasiado poderosa cuando no los necesitas (lo que debería ser la mayor parte del tiempo). Además, la implementación aún debe considerarse experimental.
En cuanto a la documentación, todo lo que realmente existe es la wiki de Harmony, en particular esta página, que refleja la implementación actual de proxies en V8 (y, por lo tanto, nodo):