Коммуникация межкомпонента в JavaScript

У меня есть потребность в коммуникации межкомпонента в веб-приложении, и рассматриваю различные способы выполнить это. Я имею некоторые идеи, но приветствовал бы другие идеи.

Во-первых, быстрый и простой пример. У меня есть два отдельных компонента на странице, которые загружаются асинхронно. Компонентом я имею в виду блок HTML, который имеет объект JavaScript, связанный с ним, который включает основанные на jQuery поведения в узлы в HTML. Когда пользователь взаимодействует с одним компонентом, изменения должны произойти в другом компоненте, и наоборот.

Ключевая вещь помнить вот состоит в том, что каждый компонент должен быть автономным устройством. Это могло быть снова использовано в различных частях приложения или даже различных приложений. Таким образом, это не знает о существовании других компонентов на странице.

Мои текущие мысли о решении включают компоненты наличия, прислушиваются к пользовательским событиям, что они интересуются, а также отправка пользовательских событий, когда действие произошло. Поэтому каждый компонент прислушивается к событиям, которые инициированы другим.

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

Таким образом, вот некоторые связанные вопросы:

  1. Что происходит с событием после того, как оно будет инициировано? Это просто исчезает, при отсутствии слушателей в то время, когда это было инициировано?

  2. Существует ли способ обнаружить, если инициированный даже был использован или потерян?

  3. Каковы некоторые хорошие пути к каждому компоненту для знания о других компонентах?

  4. Есть ли какие-либо существующие проекты JavaScript с открытым исходным кодом или плагины jQuery, которые имеют дело с этими типами вещей?

В отношении вопроса № 3 я думаю, что каждый компонент мог отослать своего рода событие регистра, которое включает типы событий, которые это слушает и список компонентов, в которых это зарегистрировалось. Компоненты прислушались бы к этим событиям регистра. Своего рода регистрационная логика использование таймеров использовалось бы для проверки правильных компонентов, регистрируется вместе во время процесса загрузки компонента. После того как регистрация завершилась, затем компоненты смогли бы отправить свои нормальные события.

5
задан Tauren 6 August 2010 в 19:41
поделиться