Как работает фреймворк Meteor JavaScript? [закрыто]

108

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

Но как это работает в Meteor? Как разные части Meteor связаны друг с другом?

Jatin
источник
8
Это конструктивный вопрос, основанный на фактах. Любые действительные ответы ДОЛЖНЫ быть "подтверждены фактами, ссылками или конкретным опытом". Очевидно, casperOne неправильно поняла вопрос или критерии определения вопроса как неконструктивного.
Чарли Флауэрс
3
Но этот вопрос, скорее всего, потребует «расширенного обсуждения» и не имеет «ответа».
durron597 07
9
@ durron597 Я думаю, вы говорите, что ответ на вопрос очень большой (поправьте меня, если я неправильно понял). Я это понимаю, но это не то же самое, что быть «неконструктивным». Определение «неконструктивный» в приведенном ниже стандартном резюме дает понять, что тег «неконструктивный» предназначен для необъективных вопросов. Этот вопрос на 100% объективен. Meteor работает так, как работает. Если здесь начнут появляться несколько мнений, то все, кроме одного, будут ошибочными.
Чарли Флауэрс
@mplungjan Я не считаю ни один из этих ответов удовлетворительным, потому что ни один из них не соответствует принципу Meteor: «Данные по проводам. Meteor не отправляет HTML по сети. Сервер отправляет данные и позволяет клиенту их визуализировать». первый принцип из 7 принципов.
Александр Миллс

Ответы:

81

Meteor - это фреймворк, который элегантно обновляет HTML в реальном времени.

Прелесть Meteor в том, что вам нужно только создать шаблоны и модели данных. Остальная часть обычного шаблонного кода скрыта. Вам не нужно писать весь код синхронизации.

Ключевые элементы Meteor можно построить самостоятельно, используя эти элементы:

  • Он предоставляет шаблоны, которые обновляются автоматически при обновлении ваших моделей данных. Обычно это делается с помощью Backbone.js , Ember.js , Knockout.js или другого инструмента.

  • Сообщений клиент / сервер осуществляется через WebSockets , используя что - то вроде socks.js или Socket.io .

  • Стороне клиента подключения к MongoDB действительно охладиться. Он реплицирует драйвер сервера MongoDB в клиент. К сожалению, в последний раз, когда я проверял, они все еще работали над безопасностью подключения к базе данных.

  • Компенсации задержки просто обновление на стороне клиента модель первой, а затем отправить обновления на сервер-сервер.

Могут быть и другие полезные элементы, которые вы можете найти на сайте Meteor или на GitHub .

xer0x
источник
10
Хотя это хорошо, это не совсем решает вопрос.
Заключенный ZERO
2
может быть, он действительно отвечает на вопрос, скрытый в вопросе
Мухаммад Умер
1
В этом ответе четко указано, что Meteor выполняет всю связь между клиентом и сервером с помощью веб-сокетов. Думаю, это тоже ответило на вопрос.
Усама Ахмед
Связаны ли meteor js и node js в v0.9?
yozawiratama
28

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

Чтобы прочитать о фреймворке Meteor JavaScript , см. Этот ответ от xer0x .

Как упоминалось в документации Meteor Server, Meteor - это реализация Comet . Comet, в свою очередь, является аналогом AJAX .

В случае AJAX вы обычно делаете запрос, когда клиент видит в этом необходимость. Чтобы получить обновления с сервера, вам нужно будет вызвать сервер, например. каждые 5 секунд.

В случае Comet обновление с сервера происходит быстрее, потому что соединение постоянное. Соединение устанавливается клиентом, как в AJAX, но сервер не отвечает, пока он не обновится или не достигнет предела выполнения (сценарии на сервере могут иметь ограничения на выполнение).

В случае с Meteor вы просто получаете постоянный поток данных, для которого требуется определенный серверный код (например, Meteor Server) и соответствующий код на клиенте (в данном случае это похоже на класс Meteor).

Tadeck
источник
1
Есть Meteor и есть Meteor Server. У меня такое чувство, что исходный вопрос был о первом, а этот ответ - о втором? meteor.com и meteorserver.org
ile
2
Нет, материал Meteor.com - это усовершенствованная форма Comet. В частности, он использует длинный опрос, вы можете посмотреть его в инструментах chrome dev.
wmil
1
@ile: Да, есть JavaScript-фреймворк под названием Meteor ( github.com/meteor/meteor ) и есть Meteor.js , клиентская часть для Meteor Server ( meteorserver.org/client-docs ). Я считаю, что это слишком двусмысленный вопрос, чтобы сказать, какой из этих OP имел в виду на самом деле.
Tadeck
5
@ile Вообще-то меня интересовал meteor.com. На самом деле я не знал о meteorserver.org до вашего комментария.
Jatin
2
Фреймворк meteor.js НЕ является HTTP-сервером Meteor. Несмотря на неудачный выбор имен людей, создавших фреймворк. См. Meteor.com для получения дополнительной информации.
xer0x
25

Вся магия с обновлением данных в реальном времени происходит из-за системы отслеживания зависимостей. Объяснение того, как это работает, можно найти в разделе документации Tracker .

snez
источник
Meteor.deps был переименован в Meteor.tracker. Источник здесь
Бенджамин Крузье
Я думаю , что это было перемещено в docs.meteor.com/#/full/tracker
Нимир