Задать вопрос

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 фреймворков?
  • Вопрос задан
  • 3385 просмотров
Подписаться 4 Оценить Комментировать
Решение пользователя Алексей Ярошевич К ответам на вопрос (3)
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")

И т.д.

Главное, понять, что чем меньше модуль, тем больше вероятность, что он стабильнее работает, и что тесты написано качественно.
Ответ написан
Комментировать