Javascript backend frameworks or vanilla js?

Всем привет!

Есть задача сделать API сервис для мобильного приложения.
Задача API: работа с пользователем(авторизация, регистрация, верификация), сессия пользователя, работа с бд(CRUD).
По серверу и db: Nodejs + NoSQL.

До этого имел опыт с PHP MVC фреймворками. В JS все немного подругому, асинхроность опять же. Необходима помощь в выборе фрейморка или набора библиотек для работы с бд в стиле ORM Моделей.

На текущий момент нагуглил MVC фреймворки:
-Sails.js
-locomotive.js

Но так же есть огромное кол-во библиотек для решение конкретных задач.
Расматриваю вариант написания на чистом js.

Уважаемые node.js программисты, исходя из своего опыта, порекомендуйте
примеры приложений, статьи. Так же интересует, как вы считаете, необходимо ли использование MVC фреймворков?
  • Вопрос задан
  • 3362 просмотра
Решения вопроса 2
MarcusAurelius
@MarcusAurelius Куратор тега Node.js
автор Impress Application Server для Node.js
Посмотрите вот этот мой развернутый ответ: Подсоветуйте фреймворк для node?
Инструментов можно набрать тут: nodeframework.com и тут https://github.com/sindresorhus/awesome-nodejs и тут https://github.com/vndmtrx/awesome-nodejs

По БД рекомендую MongoDB, если у Вас данные аморфные, сложной или часто изменяющейся структуры с этими драйверами: https://www.npmjs.com/package/mongodb А если данные имеют редко меняющующуюся структуру и хорошо ложатся в таблицы, то берите реляционку, лучше PostgreSQL, с драйверами: https://www.npmjs.com/package/pg Но я не люблю и не рекомендую ORM, обычно от них больше проблем, тормозов и дополнительной работы больше, чем выгоды от их внедрения. Если уж приспичит, то для монги есть mongoose: mongoosejs.com это ODM, аналог ORM для документных баз, а для PG есть много вариантов, которые основаны на том же драйвере pg.

Паттерн MVC он вообще изначально был изобретен для графических интерфейсов пользователя, и там он еще как-то себя оправдывает, да и то кривенько, почитайте эти мои статьи: habrahabr.ru/post/204958 и habrahabr.ru/post/117791 Для ноды это вообще противоестественно. GUI и бекенд должны быть разделены сетевым API, на которое вешаются что мобильные приложения, что браузерные, что оконные, это уже без разницы.
Ответ написан
Комментировать
qfox
@qfox
Ответы есть у меня
В nodejs все немного подругому — нет, увы, но там совсем все иначе.

Во-первых, ваше приложение будет висеть в памяти долго и параллельно обрабатывать несколько запросов, в то время как в PHP тред сдохнет после отправки ответа на запрос; во-вторых, в node.js широко практикуется микромодульность; в-третьих, на vanilla.js вы замучаетесь писать, потому что это просто ядро js — окружение nodejs вам все равно понадобится для работы с libuv и сокетами/дескрипторами, и это будет уже не vanillajs.

Исходя из этих замечаний, пытливый читатель уже начнет догадываться, что ему нужны разные модули для:
а) веб сервера (или нет);
б) работы с хранилищами и абстракций над ними (моделей, клиентов дб с пуллом, или без, или руками все писать);
в) записи в лог (или руками stdout перенаправлять);
г) соль, перец по вкусу.

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

Я бы порекоммендовал смотреть в сторону сырого https://github.com/senchalabs/connect, либо чуть более полного https://github.com/strongloop/loopback (фактически, connect с плагинами).
Если чем-то не устраивает — можно смотреть https://www.npmjs.com/package/restify (или то, что его у себя использует: https://www.npmjs.com/browse/depended/restify).

В качестве абстракции над моделями либо https://github.com/sequelize/sequelize (если база будет mysql/pgsql), либо https://github.com/Automattic/mongoose (если без разницы какая база) + https://github.com/Tokutek/mongo.

Для веб логов — https://github.com/expressjs/morgan
Для других логов — например, https://github.com/winstonjs/winston + нужные транспорты
Для конфигов — https://github.com/flatiron/nconf, если не хватает просто require("config.json")

И т.д.

Главное, понять, что чем меньше модуль, тем больше вероятность, что он стабильнее работает, и что тесты написано качественно.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
k12th
@k12th
console.log(`You're pulling my leg, right?`);
Если нужно только API, то посмотрите на loopback.io
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы