Activar Harmonia Proxies em nodejs
-
11-12-2019 - |
Pergunta
É possível habilitar o EcmaScript 6 Harmonia Proxies em nodejs?Se assim for, quais são os prós e contras?E existe alguma documentação sobre como usá-los?Obrigado !
Solução
Invocando o nó com node --harmony-proxies
deve fazer o truque.
Prós:proxies são um recurso muito poderoso quando você realmente precisa deles.
Contras:proxies são demasiado poderoso recurso quando você não precisa deles (que deve ser a maior parte do tempo).Além disso, a execução deve ainda ser considerada experimental.
Como para a documentação, tudo o que existe realmente é a atm é a Harmonia wiki, em particular, esta página, o que reflete a atual implementação de proxies em V8 (e, portanto nó):
Outras dicas
eu recomendo harmonia-refletir, o que torna fácil e.g.configurar get/set armadilhas:
ATUALIZAÇÃO cuidado, abaixo 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
o acima é o inceptive código para fazer "transparente persistência de objeto' em JavaScript.usando harmony-reflect
, torna-se trivial para fazer com que todos os get
e set
ações em um objeto obter interceptada—nesta versão de demonstração, vamos definir um %is-clean
atributo, portanto, podemos testar se os membros do objeto ter sido alterado, e nós também excluir os membros que tenham sido definidas para indefinido.
Você pode usar o Pimped-Proxy que uma implementação leve de proxies, facilitando a declaração e o ES5 compatível. Ao contrário do proxy nativo, só pode proximidades conhecidas no tempo de criação.
Proxy
agora está disponível nativamente em versões do nó>= 6.
Proxies Harmony não funcionam tão bem para Nodejs, porque são efetivamente chamadas de função de tipo síncrono.Ou seja, você não pode implementar um método proxy que é assíncrono.
Veja este repositório Github para exemplos: https://github.com/mschwartz/silkjs-harmony