Sails.js против Meteor - В чем преимущества обоих?

Я много читал о Nodejs и его фреймворках и недавно закончил свой первый полный интерфейс javascript (используя Angularjs).

Я решил, что мой следующий проект для животных будет приключением Nodejs, используя одну из этих двух фреймворков:

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

Некоторые функции, которые мне требуются для моего проекта для домашних животных:

  • Результаты в реальном времени
  • Reddit-подобные потоки, в реальном времени
  • Википедийное издание страницы
  • Пользователи/Роли

Ответ 1

Я не могу говорить за Метеор, но я могу помочь создать небольшой фон на парусах, потому что я его создал.

TL;DR; Паруса не панацея для всех проблем в Интернете, но я считаю, что Node.js есть. Целью Sails является создание практической основы для разработки полных, масштабируемых, запускаемых и удобных для бизнеса приложений, построенных на Node.js. Я начал Balderdash с вопросом "Можем ли мы использовать Node.js для всего?". Паруса - это ответ.


Из новых документов:

Паруса - это, конечно же, веб-фреймворк. Но сделайте шаг назад. Что это значит? Иногда, когда мы ссылаемся на "сеть", мы имеем в виду "интерфейсную сеть". Мы думаем о концепциях, таких как веб-стандарты, или HTML 5, или CSS 3; и фреймворки, такие как Backbone, или Angular, или jQuery. Паруса не являются "такими" веб-фреймворками. Sails отлично работает с Angular и Backbone, но вы никогда не будете использовать Sails вместо этих библиотек.

С другой стороны, иногда, когда мы говорим о "веб-фреймворках", мы имеем в виду "back-end web". Это вызывает такие понятия, как REST, HTTP или WebSockets; и построен на таких технологиях, как Java, или Ruby, или Node.js. Рамка "back-end web" помогает вам делать такие вещи, как сборка API, взаимодействие с базами данных, подача HTML файлов и управление сотнями тысяч одновременных пользователей. Паруса "такого рода" веб-фреймворка.

Несколько лет назад я взял на себя обязательство использовать Node.js для всего - это была любовь с первого взгляда. Я построил паруса поверх Express и Socket.io, поскольку они были (и остаются) наиболее устоявшимися модулями Node для их соответствующих случаев использования. Код обработки запроса в Sails совместим с Express, с дополнительным преимуществом неявной поддержки Socket.io.

Sails предназначен для совместимости с любой стратегией, которую вы имеете для создания своих интерфейсных модулей в Angular, Backbone, iOS/ObjC, Android/Java или даже просто предлагая необработанный API, который будет использоваться другой веб-службы или вашего сообщества разработчиков. Если вы в конечном итоге измените свой подход (например, переключитесь с Backbone на Angular) или полностью построите новый интерфейс (например, создав собственное приложение для Windows Phone), приложение Sails по-прежнему будет работать. Как вы уже знаете, некоторые люди называют этот подход сервис-ориентированной архитектурой или SOA (Joe McCann имеет отличную колоду по этому вопросу.)

В то же время Sails поддерживает другие привычные соглашения для создания веб-серверов - стандартную структуру MVC, возможность создания чистых API-интерфейсов и основных модулей, которые являются открытыми, настраиваемыми, расширяемыми и даже заменяемыми. Это означает, что Sails может быть настроен так, чтобы соответствовать потребностям пользователей, как низкий уровень, как это необходимо.

В 2013 году структура испытала некоторый огромный рост популярности, и наш консалтинговый бизнес вырос. Остальные основные разработчики и я расширили нашу акцент на том, чтобы сделать бэкэнд-развитие максимально быстрым и простым. Связанные с этим аспекты Sails, таких как перехватчики (плагины), тестирование и документы, прошли долгий путь за последний год благодаря усилиям как нашей основной команды, так и сообщества (постоянно расширяющегося) Sails в целом. Есть много дорожных элементов, над которыми мы все еще работаем, но я считаю, что Sails - лучший вариант для стабильной, поддерживающей MVC-разработки на Node сегодня. Остальная часть команды и я привержены продолжению обслуживания и развития функций, и поскольку мы используем ее для всех наших клиентских проектов, она никуда не идет.

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


Дополнительные ресурсы:

FAQ | Sails 101 | Оригинальный скринкаст | Руководство по вкладам | fooobar.com/questions/tagged/...

Группа Google | Roadmap | IRC: #sailsjs на Freenode | Состояние сборки

Ответ 2

Я создал пару проектов с Meteor и еще не работал с Sails. Так что мое мнение будет, безусловно, предвзятым, надеюсь, что это будет полезно.

Создание интерфейсного

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

С другой стороны, Sails предоставляет только базовую инфраструктуру, и вам придется принести свою собственную интерфейсную инфраструктуру.

В отличие от большинства фреймворков Node.js Метеор является синхронным

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

Паруса кажутся простой структурой MVC Node.js, поэтому при взгляде на нее не должно быть ничего удивительного.

Вы должны использовать MongoDB с Meteor

Да, вы можете использовать другие базы данных с Meteor, но они не имеют такой же поддержки, как MongoDB. Принимая во внимание, что с Sails это похоже на ORM для пары баз данных.

Производительность

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

Устойчивость

Метеор все еще очень свежий и еще не достиг 1,0. Вы должны ожидать, что некоторые изменения будут сделаны в течение следующих двух выпусков, которые нарушат обратную совместимость. Если вы начинаете с этого как можно скорее, вы можете рассмотреть возможность использования ветки 0.8-rc0. При этом некоторые функции в конвейере действительно великолепны и сделают версию 1.0 очень заманчивой.

Заключительные мысли?

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

PS Ознакомьтесь с дорожной картой, чтобы понять, что происходит.

Ответ 3

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

Вещи, которые отлично работали  - Начало работы было отличным, и я очень поддерживался опубликованными материалами  - Кривая обучения была очень коротка, и есть здоровое сообщество за парусами  - После начального обучения очень легко быть творческим быстро

Что можно улучшить  - Сложные структуры данных сложны для реализации  - Интеграция Passport.js была болезненной, поскольку нет чистых справочных материалов.

Рекомендации  - Ponzi coder имеет отличный учебник, и это действительно помогло мне перейти https://www.youtube.com/user/ponzicoder  - Знание больше о экспресс-и ватерлинии поможет при попытке более сложных проблем с данными.

В целом я бы рекомендовал паруса.

Ответ 4

В настоящее время я использую Meteor и не использовал Sails.js.

Метеор был чрезвычайно приятен в работе, и я думаю, что это был бы отличный выбор для веб-приложений в реальном времени. Что касается пользователей/ролей, вы можете проверить интегрированный Accounts пакет, а также выполнить поиск Atmosphere для предоставляемые сообществом роли/пакеты разрешений.

В конечном итоге я бы рекомендовал попробовать небольшой проект с использованием обеих технологий и посмотреть, что вам нравится.