Вопрос

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

Это было полезно?

Решение

Призывающий узел с node --harmony-proxies должен сделать трюк.

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

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

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

http://wiki.ecmascript.org/doku.php?id=Гармония: прокси

Другие советы

Я рекомендую отражение гармонии, что позволяет легко, например.настроить получение/установку ловушек:

ОБНОВЛЯТЬ осторожно, ниже 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 атрибут, чтобы мы могли проверить, были ли изменены члены объекта, а также удалить элементы, которым присвоено значение undef.

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

https://github.com/bousangerie/pimed-proxy

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

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

Смотрите этот репозиторий GitHUB для примеров: https://github.com/mschwartz/silkjs-harmony

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top