© 2021 WebHive

Первое впечатление от sails.js

Начал проектик на sails.js, чтобы прочуствовать этот движок. Опишу ниже некоторые моменты которые позникли по ходу. Не претендую на полноту и объективность — все написанное ниже это мои личные впечатления.

Нет миграций

Первое, что вызвало недоумение это отсутствие миграций в их привычном виде. Вместо этого sails.js автоматически изменяет схему БД в соответствии с изменениями в моделях. Насколько это хорошо или плохо пока сказать не могу. Пока чисто умозрительно это скорее плохо, т. к. насколько говорит мой опыт — не все изменения можно безопасно сделать автоматически. Например непонятно как сделать например автоматически переименование столбца. Поэтому эту фичу отнесу скорее к недостаткам.

Таблицы именуются точно по имени модели

После Rails выглядит непривычно, и это скорее мелкая придирка. Просто немного режет глаз когда видишь таблицы в БД. Чуть позже нашед способ задать имя таблицы в модели, но все равно по умолчанию это просто имя модели.

Отсутствуют логи

В development режиме нет логов. Никаких. Надо настраивать whinston. Видимо для node.js джедаев это банально-очевидно, но для меня это стало реальной проблемой. Отлаживать приложение «вслепую» довольно тяжело.

Чуть позже я понял, что никакая настройка whinston не спасет. Логгировать можно какие-то свои действия, но по умолчанию никаких абсолютно логов ни в файл ни в консоль не пишется. Я в полном недоумении. В Rails как минимум видно запросы к серверу, выполняющиеся SQL запросы и порядок рендеринга шаблонов. Здесь же вообще непонятно, что происходит в данный момент в системе.

ORM не поддерживает связи

И это просто трагедия. Связи между моделями отсутствуют как класс. Я было даже полумал, что я чего-то не понял, но информация с официального сайта (сегодня 22 декабря 2013 г.) гласит:

Associations are not yet available for Sails.JS, however are on the immediate todo list.

Для движка, позиционируемого как «production ready» это просто срамота какая-то. Ну и для справки раз уж порылся в этой теме используется в нем некая ORM Waterline — самописная ORM система, писаная под sails.js. К плюсам можно отнести относительную всеядноось 0 список поддерживаемых БД довольно обширен, синтаксис пытается быть похожим на Rails ActiveRecord.

Некоторые выводы

В общем как по мне так сыроват еще этот фреймоворк. До рельсов ему как пешком до луны. И если это один из лучших если ен лучший (по моему мнению) движок на node.js, то становится совсем грустно. А заявки типа Sails makes it easy to build custom, enterprise-grade Node.js apps кроме слёз никаких эмоций вызвать не могут.

Наверно если вам не нужны связи в моделях, вы готовы строить формы руками, делать руками авторизацию (passport с плугинами по сравнению с devise это просто пигмей), то такой enterprise-grade это то, что вам надо.

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

Комментарии