Подтвердить что ты не робот

Включить прокси-серверы в узлах

Можно ли включить EnmaScript 6 Harmony Proxies в nodejs? Если да, то какие плюсы и минусы? И есть ли какая-либо документация о том, как их использовать? Спасибо!

4b9b3361

Ответ 1

Вызов node с помощью node --harmony-proxies должен сделать трюк.

Плюсы: прокси-серверы - очень мощная функция, когда они вам действительно нужны.

Минусы: прокси-серверы - слишком мощная функция, когда они вам не нужны (что должно быть в большинстве случаев). Кроме того, реализация должна по-прежнему считаться экспериментальной.

Что касается документации, все, что на самом деле является atm, это виртуализация Harmony, в частности эта страница, которая отражает текущую реализацию прокси в V8 (и, следовательно, node):

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

Ответ 2

Я рекомендую harmony-reflect, что облегчает, например, настроить get/set ловушки:

ОБНОВЛЕНИЕ осторожно, ниже - 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

приведенный выше код является проницательным для выполнения "прозрачного сохранения объекта" в JavaScript. используя harmony-reflect, становится тривиальным, чтобы сделать так, чтобы все действия get и set на объекте были перехвачены - в этой демонстрации мы устанавливаем атрибут %is-clean, чтобы мы могли проверить, были ли изменены члены объекта, и мы также удаляем элементы, которые были установлены в undefined.

Ответ 3

Вы можете использовать pimped-proxy, который облегчает реализацию прокси, упрощая декларирование и совместимость с ES5. В отличие от родного прокси, он может определять только свойства прокси во время создания.

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

Ответ 4

Proxy теперь доступен изначально в версиях Node > 6.

Ответ 5

Прокси-серверы Harmony не будут работать так хорошо для nodejs, потому что они эффективно выполняют синхронные вызовы функций типа. То есть вы не можете реализовать прокси-метод, который асинхронно.

См. этот репозиторий GitHub для примеров: https://github.com/mschwartz/SilkJS-Harmony