Как определить, какие рамки использовать для node?

Итак, мы долгое время использовали node, и я должен сказать, что с растущим сообществом для node люди разрабатывают множество потрясающих модулей и фреймворков. Но по мере того, как мы работаем над все большим количеством проектов, я иногда смущаюсь о том, какие рамки нужно искать. До сих пор мы использовали следующие рамки:

  • Express - одна из моих любимых фреймворков для node, и это было первым, когда мы начали создавать приложения в node.js. (Я думаю, что это также стало первым, получившим такую ​​популярность). У нас есть проблемы, такие как обратные вызовы, но при условии, что маршрутизация и организация кода намного более чисты, мы были рады использовать ее.

  • KoaJS - Еще один из TJ и команды, и это просто потрясающе! Использование ECS 6, когда какой-либо из браузеров почти не поддерживает их. (Специально, когда это помогает вам полностью удалить обратные вызовы). У нас были некоторые проблемы с https-совместимостью с Koa и пришлось переписать весь сервер с помощью hapi, а также тот факт, что он зависит от нестабильной версии на node.

  • Hapi - Это наше последнее принятие и мало что с ним поделалось, но самая забавная часть это модуль joi, который помогает нам проверять запросы (легко) даже до того, как они попадут на фактический сервер, а также автоматическое создание документов.

  • Synth - я не очень много общался с ним, но, читая документы, я наткнулся на

Используйте службы и инъекции зависимостей, например, AngularJS, но на фоновый!

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

Итак, когда вы пытаетесь найти фреймворк для своего приложения, есть ли какой-то определенный набор функций, в котором есть одна структура, а другие нет? Потому что, честно говоря, мы использовали большинство фреймворков только с целью их опробования и помимо различий в синтаксисе (кроме Koa, использующего ECS 6) и того, как они обрабатывают маршруты, я не мог найти много различий между ними.

Итак, мой вопрос заключается в том, следует ли нам принять любую структуру, просто взглянув на ее популярность (что обычно делают люди) или есть какие-то контрольные точки, которые нам нужно учитывать, делая то же самое?

Любые предложения/помощь оценены.

Edit

Я хотел добавить, что мое намерение по этому вопросу состоит в том, чтобы выяснить ключевые моменты, чтобы рассмотреть, выбрав любую из node.js framework (а не только в зависимости от ее популярности или сколько больших имен использует его). Для интерфейсного интерфейса мы можем легко сказать, потому что мы уже знаем или были рассказаны о ключевых функциях, которые облегчили бы разработку (разница между angular и базой может быть примером). Но для node.js, что не является каким-либо образом.

Я бы попросил других рассмотреть мои изменения тоже.

Ответ 1

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

Express.js

Pros

  • Express.js - большой парень, довольно старый и невероятно популярный.
  • Простые в использовании представления
  • Очень легкий

против

  • Нет привлекательных функций

Koa.js

Pros

  • Легкий вес
  • Koa - это, возможно, преемник Express
  • Никакой обратный вызов, благодаря генераторам ES6
  • Построенный тем же парнем, что и Экспресс

против

  • Довольно новый, а не супер изысканный
  • Использует функции ECMAScript 6, то есть вам нужно Node.js v0.11 (нестабильно)

Хапи

Pros

  • Многие официальные модули, но не тонна сторонних.
  • Разработано крупной корпорацией, которая использует ее для собственных продуктов.

против

  • Построен Walmart
  • Разный синтаксис для указания маршрутов, чем Koa или Express.
  • Сама и все официальные модули имеют странные имена

Synth

Первая базовая инфраструктура, специально разработанная для одностраничных веб-приложений.

Pros

  • Предназначен для создания одностраничных веб-сайтов, ala Angular.js
  • API First
  • Инъекция зависимостей, знакомая тем, кто приходит с Java
  • Предназначен для создания тонны бэкэндов, позволяя вам работать с интерфейсом

против

  • Injection Dependency, не нравится большинству людей, потому что Java - единственная причина, по которой она существует.
  • Очень новый, в настоящее время в бета-версии
  • Не работает с более традиционными веб-сайтами.

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