node.js vs. meteor.js в чем разница? [закрыто]

88

Итак, я много слышал / читал о meteor.js. В учебниках он выглядит очень спортивным как фреймворк, но я все еще немного новичок, когда дело касается веб-программирования.

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

А как насчет метеора? В чем его реальные преимущества и в чем разница? Кто-нибудь начинал как пользователь node.js и «преобразовал», или это все еще более любопытный новый фреймворк?

ZacAttack
источник

Ответы:

159

Вольная аналогия: «Meteor для Node, как Rails для Ruby». Это большая самоуверенная структура, использующая Node на сервере. Сам Node - это просто низкоуровневая структура, предоставляющая функции для отправки и получения HTTP-запросов и выполнения других операций ввода-вывода.

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

Еще одно отличие: хотя сам Node стабилен и широко используется в продакшене, Meteor находится в состоянии «предварительного просмотра». Существуют серьезные ошибки, и некоторые вещи, которые не подходят для концептуальной модели Meteor, ориентированной на данные (например, анимация), очень сложно сделать.

Если вам нравится играть с новыми технологиями, попробуйте Meteor. Если вам нужен более традиционный и стабильный веб-фреймворк, построенный на Node, обратите внимание на Express .

Тревор Бернхэм
источник
2
Улучшил ли Meteor свои «серьезные ошибки» с прошлого года?
danorton
3
@danorton Да, я бы так сказал. Для некоторых приложений Meteor теперь вполне жизнеспособен, и с ним приятно работать.
Trevor Burnham
4
Также обратите внимание, что этот ответ в конечном итоге не будет полностью точным, поскольку Meteor находится в активной разработке и получил значительные финансовые вложения, которые ускоряют время разработки, и мы надеемся вывести его из стадии «предварительного просмотра».
Goddard
12

Meteor - это фреймворк, построенный на node.js. Для развертывания он использует node.js, но имеет несколько отличий.

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

Акшат
источник
4
версия 0.6.0 теперь имеет прямую поддержку модулей NPM meteor.com/blog/2013/04/04/…
Макс Ходжес
9

Сила Meteor заключается в его функции обновлений в режиме реального времени, которая хорошо работает для некоторых социальных приложений, которые вы видите сегодня, где вы видите обновления всех тех, над чем вы работаете. Эти обновления сосредоточены вокруг репликации подмножеств коллекции MongoDB под обложками в качестве обновлений локальной базы данных mini-mongo (их подмножество MongoDB на стороне клиента) в вашем веб-браузере (что вызывает запуск нескольких событий рендеринга в ваших шаблонах). Последняя часть о множественных обновлениях рендеринга также является слабым местом. Если вы хотите, чтобы ваш пользовательский интерфейс управлял обновлением пользовательского интерфейса (например, классические страницы jQuery AJAX, на которых вы загружаете HTML и управляете всеми вызовами AJAX и обновлениями пользовательского интерфейса), вы будете бороться с этим механизмом.

Meteor использует хороший стек подключаемых модулей Node.js (Handlebars.js, Spark.js, Bootstrap css и т. Д., Но с использованием собственного механизма упаковки вместо npm) внизу вместе с MongoDB для уровня хранения, который вам не нужно подумать о. Но иногда вы тоже боретесь с этим ... например, если вы хотите настроить тему Bootstrap, она нарушает последовательность загрузки файла responseive.css Bootstrap, поэтому он больше не реагирует (но это, вероятно, исправится само, когда Bootstrap 3.0 скоро выйдет).

Так что, как и все «фреймворки полного стека», все работает отлично, пока ваше приложение соответствует тому, что задумано. Как только вы выйдете за эти рамки и раздвинете границы, вы можете в конечном итоге бороться с фреймворком ...

Кеньи
источник
2
Метеор V0.6.0 + имеет НПМ интеграции: meteor.com/blog/2013/04/04/...
Manav Kataria