Вот поставил недавно Sails.js, ковыряюсь в нем, осваиваю потихоньку и пока все нравится. Особенно потребление памяти и скорость запуска приложения по сравнению с Rails) Использовал Passenger с Nginx для реализации нормальных виртуальных хостов без проксирования домена на порт.
Ранее я использовал PHP, Ruby on Rails, Node.js с Express, и у меня сложилось мнение, что за Node.js будущее бэкенд разработки, и что если у меня будет выбор, на чем писать очередной проект, то я не колеблясь выберу Sails.js.
Так вот, хотелось бы узнать мнения людей, которые тоже пересели откуда-то на ноду или даже отказались от него впоследствии. Какие у вас общие впечатления от использования ноды и Sails.js в частности, если сравнивать с аналогами (Rails, PHP фреймворки, Django - да все что угодно)?
Ну не знаю, я вообще чистый npm использую для стилей и скриптов (blog.keithcirkel.co.uk/why-we-should-stop-using-grunt - вот статья, после которой я решил больше не пользоваться таск-менеджерами), без grunt и чего-то подобного - это вообще не проблема в sails. Просто при создании приложения добавляешь --no-frontend и удаляешь папку tasks с gruntfile, а дальше делай что хочешь.
Babel вообще вроде просто js файлы компилирует в ES5, ему ж должно быть без разницы, что используется, разве нет?
Вообще sails ничего не навязывает особо, только дает структуру и базовый набор всего необходимого, где любой компонент можно легко заменить или вообще убрать. В принципе все то же я бы делал на Koa или чистом Express, но это бы отняло много времени.
Webpack - не таск менеджер, а инструмент сборки проекта. Сам тоже работаю через Makefile + npm scripts.
Про babel - да. Но как его прикрутить к sails?
Раньше Sails базировался на Express, сейчас от него ушли. У них собственная ORM, хотя уже есть Sequelize и Mongoose.
Сразу вспоминается Meteor почему-то :)
Наверное, нужно было ещё пояснить использование фреймворков... Я занимаюсь разработкой веб приложухи, у которой есть изоморфная часть на React. Ну и REST API.
Единственное, где я бы смог сэкономить время, сравнивая с моим текущим сетапом, это policies и routes. С другой стороны, как прикрутить серверную отрисовку реакта к Sails? Как передать состояние (или просто данные) этой изоморфной части?
Babel я лично не использовал, но предполагаю, что его можно с watch интегрировать, то есть просто складывать или в ту же папку скомпиленный файл, или вообще разделить папку с самим проектом и его кодом на es6. Ну это только предположение, может я неправильно понимаю работу babel)
Express в sails вроде остался судя по package.json. Может, это они не убрали просто, но судя по объектам request, response он там должен быть.
Waterline независим от конкретной субд, плюс у него киллерфича - полностью прозрачные миграции на реляционных базах, взаимозаменямость реляционных и не реляционных. Теоретически можно использовать, например, монгу в разработке и постгрес в продакшене - разницы с точки зрения логики приложения никакой, только адаптер нужный подставить надо в конфигах.
Вот изоморфный код - это да, наверное, было бы проблемой прикрутить к sails. А вот REST API там можно даже без контроллеров лепить с помощью blueprints - можно просто создать модели, задать им всю логику проверок, преобразований значений и т.д. - и все, приложение готово можно сказать) Возможно, подобное есть где-то еще, но я с этим впервые столкнулся в sails.
Update 20.01.2016
Я использовал (4 месяца), Sails.js в одном проекте в качестве бекенда для API. Сначала впечатления были хорошие, но углубляясь в проект, я понял что Sails.js ужасен.
1. Он не развивается. Вообще. Как была год назад версия 0.11, такая она и сейчас. И такая же будет через год.
2. Утечки памяти. Гуглил, нашел что рекомендуют отключить сокеты. Отключил, утечки стали меньше, но не прошли.
3. Ужасная, просто ужасная ORM Waterline. Не годна для проектов сложнее чем hello world. Полу нерабочие связи. Нет сложных индексов, транзакций. У меня 2 раз падал Sails при старте на стадии миграции и тер нафиг все данные в БД. И эту ORM невозможно выпились или заменить. Он внутри Sailsa.
Монолитные фреймворки в JS нынче не в почете вообще, на бэкенде особенно.
Клепать на конвейере каталоги-визитки-бложики — проще на вордпрессе/друпале. А если нужен кастом, так берут express+mongoose+passport, который можно согнуть как угодно.
Константин Китманов: так а в чем принципиальное отличие sails от того же rails, что он не в почете? По простым сайтам - конечно, там проще движок взять, в этом согласен.
Тимофей: да ни в чем, наверное (разве что для руби гемов все-таки побольше, наверное) — но я с рельсами практически не знаком. Говорят, впрочем, sails больше похож на sinatra.
Просто рельсы технология обкатанная (простите за каламбур), а ко всему новому человек относится подозрительно, и ноду до сих пор почему-то считают нестабильной платформой.
Константин Китманов: ну это да, вряд ли модулей под sails больше, чем гемов. Но там же абсолютно безболезненно можно использовать любой плагин npm, а их количество, думаю, уже сравнимо с гемами (могу ошибаться).
А по обкатанности да, сейчас любая платформа обкатаннее, чем sails)
Тимофей: в npm много барахла, а ранжирования в поиске нет никакого. Поищите, например, какой-нить приличный ORM для SQL, не являющийся заброшенным форком заброшенного форка:)
Константин Китманов: а waterline как же? С другими дела не имел, но waterline пока для меня выглядит вполне прилично. Пока не Rails ActiveRecord, но sails вроде активно развивается и waterline вместе с ним.
Константин Китманов: ну в общем сейчас опробую ноду с sails на реальном проекте, посмотрим, что из этого выйдет. Все равно пока я этого не сделаю - понять не смогу)
Думал, может на тостере есть кто-то, кто может опытом поделиться, но видимо всем страшно) А я или храбрец, или дурак - посмотрим.
Константин Китманов: sails просто сразу дает то, что необходимо - конфигурации, сессии, сокеты, структура приложения... Короче, то, что или ты будешь делать вручную, или возьмешь sails. Разницы по сути никакой, а определенная экономия времени имеет место. Другое дело, я некоторые вещи выпиливал из sails, так как не люблю, когда много лишнего, но все равно оказалось быстрее)
Ну уже есть роадмап версия 1.0 sails - описание нововведений.
Посмотрите на количество коммитов и пул реквестов
Согласен sails не без косяков, но во всяком случае автор комментария - зачем вы в продакшене используете миграции сэйлса? все таки продакшн отличается от dev и sails migrations ставят safe, а для миграций используйте grunt db migrate
Я пользую Sails, пишу вот проектик свой на нем, все нравится. Но мне особо сравнивать не с чем так как я с вебразработкой полноценной не сталкивался. Лет пять назад свое подобие cms на php накалякал, да сайтики на джумлах и модэксах. Rails полез смотреть, но в него сложнее вход оказался, хотя было интересно, а может Sails оказался попонятнее, так как до этого с рельсами покопался... Вобщем, мне sails пока всем нравится)
Ну да, у меня примерно те же ощущения. А про rails зря так говоришь - он наоборот прост до безобразия, там вообще почти код писать не надо - все где-то далеко под капотом за тебя сделано ("магия" rails). Меня на самом деле это и отпугнуло - хочу полностью понимать, что и как работает.
Тимофей: так я же написал, что sails показался понятным скорее всего из-за того, что сначала покапался в рельсах) сейчас могу сказать, что в рельсах нужно знать больше. Но в sails больше писанины. Так как многое, что в рельсах нужно знать в парусе нужно птсать)
Роман: да не, в рельсах ваще знать ничего не нужно) достаточно вбить в гугл rails gem {{сюда функция, которая тебе нужна}}, найти решение, добавить гем, сгенерить модели, контроллеры и вьюхи, написать пару строк и оно как бы уже работает. Пес его знает, как, но работает) А в ноде пока да - многое ручками делать нужно. Это даже не столько касается sails, сколько ноды в целом.