Какой JS фреймворк выбрать для full-stack?

Какой фреймворк на данный момент самый развивающийся для full-stack разработки на javascript?

Есть опыт разработки в React+redux, Angular, Vue, JQ, но это скорее о клиенте,
На Node.js я пользовал только ORM + Express, для простых каких то микро сервисов (чат, лендинг, хост API и подобное).
От экспресса ощущение конструктора лего, и вся архитектура на тебе, да и дозволяет изрядное количество говнокода.
Свела меня судьба в symphony и laravel, и было очень комфортно, но это php, чего не хотелось бы.
Я ярый фанат JS, сайты, игры, приложения на нем делаю.

Интересуют следующие вещи:
  • Строгая архитектура (Цель: пресечь говнокод, много разработчиков, мало времени делать код ревью за ними)
  • Богатый набор встроенных дебаг инструментов
  • Генерация документации
  • Наличие тестов, unit, end-to-end
  • Независимость от конкретной бд. Может и в Mongo и в SQL
  • Менеджер пакетов npm
  • Гибкость в сборке fronend (возможность использования и gulp и webpack)
  • Удобный рендеринг React/Angular/Vue на сервере
  • Легкость хоста API
  • Работа с авторизацией, куками и подобное
  • Websocket, или альтернатива
  • Своевременность обновлений
  • Кросплатформенность (Win/Mac/Lin)?
  • Шаблонизация? Pug?
  • Динамические имена фалов, пути

Из претендентов
koa.js
total.js
sails.js
meteor.js
derby.js
По репозиториям и поддержке выходит метеор, но возможно я чего то не знаю.
Бытует мнение что метеор будет скорее мертв чем жив. Пишут метеор мертв, популярен реакт, но блин, это же совсем разные вещи. Все, статьи "Метеор это будующее" из 2014 года.
Опыта ни с одним из перечисленных фреймворков нет, так что особо не ругайте за наивные вопросы.
  • Вопрос задан
  • 8440 просмотров
Пригласить эксперта
Ответы на вопрос 9
edli007
@edli007
full stack, team lead
В свое время работал и с React\Redux, и Vue, и Angular.

Зависит от задачь, наиболее удобным являеться React\Redux, при наличии человека что может вам настроить кастомный webpack, это просто сказка а не разработка.

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

Angular с его TypeScript, честно - не оценил, в нашей команде все люди имеют определенный уровень квалификации и о таких детских ошибках что он предостеригает даже не думают. Но если у вас есть вероятность гомнокодеров и грандиозные планы - это может быть выход, но не факт что дешевый.
Условности использования TypeScript замедляют общую разработку в значительной мере, следует самостоятельно оценить профит от меньшего количества багов за счет встроенных защит от дурака, на то что от более ранговых специалистов багов изначально будет меньше а работать без TypeScript будут быстрее.

Ну если у вас, извините за слово, работают совсем дятлы, то выход для них один - Ember, этот фреймворк очень хорош, его основная идея состоит в бесприкословном следовании спецыфикации, игнорируя личные предпочтения программистов. Такой код очень удобно читать, поддерживать и вобще в долгосрочной перспективе он лучше всего, но сложность найти самих эмберщиков, высокий порог вхождения. Так что если у вас есть толпа людей, которые еще ничего не умеют и требуеться что-то сделать, заставьте учить их эмбер, тогда они сделают то что надо, какие бы кривые руки у них не были.
Ответ написан
dima9595
@dima9595
Junior PHP
Если вам важен js как на фронте, так и на бэке, то попробуйте Adonis JS. Это что-то типо Laravel, только на Node.JS. Вот статейка на хабре: https://habrahabr.ru/post/324220/
Ответ написан
@Coder321
Если выберете Angular для фронта то можно посмотреть в сторону nestjs, это ангулароподобный node фреймворк.
Еще мне понравился Loopback.
Ответ написан
@xfg
Лучшее что сейчас есть это koa или express для http протокола и socket.io для websocket протокола. PHP тоже от full-stack фреймворков движется в сторону микрофреймворков. Сегодня современный фреймворк это роутинг запросов реализованный на концепции мидлваров.

Проблема спагетти-кода решается не фреймворком, а архитектурой. На сервере это обычно multilayered architecture. Бьете приложение на 4 слоя presentation, application, domain и infrastructure (еще могут называть data access layer или persistence layer). Контроллеры фреймворка куда попадает запрос пользователя это будет ваш самый верхний presentation слой. Слой инфраструктуры лучше собирать из отдельных библиотек, чем завязывать его на фреймворк. В таком случае не придется переписывать весь слой инфраструктуры из-за того, что фреймворк больше не развивается. Application и Domain слои используют Infrastructure слой через интерфейсы, тем самым абстрагируясь от конкретных реализаций. Таким образом вы всегда сможете заменить одну реализацию другой (паттерн Strategy) без изменения вышестоящих слоев. Presentation слой просто вызывает сервисы из application слоя и возвращает результат в html/json/xml/etc клиенту.

Иногда упрощают до 3 или даже 2 слоев. Например если у вас CRUD приложение, тогда application и domain слои не нужны и вы можете оставить только presentation и infrastructure. Также если ваш application слой не делает ничего, кроме вызова domain слоя, то от него также можно избавиться оставив 3 слоя presentation, domain и infrastructure.

Примеры реализации можно найти здесь и здесь. Они на Java. На javascript пока не встречал.

Более подробно тему можно изучить взяв любую книгу на эту тему.

Meteor не советую. Это не будущее. Это костыль. Они хотели сделать фреймворк для real-time приложений. Но фактически получилась просто платформа для стриминга произошедших изменений в mongo прямо на клиент.

Sails это попытка сделать full-stack фреймворк. Но весь мир движется в обратном направлении.
Ответ написан
@vshvydky
метеор мне понравился , но его заточенность под монго не совсем привлекла, вроде как есть кастылизация под другие бд, но мне не по душе орм
по тому мой выбор koa.js jwt socket.io pg-promise (бек), постгрес как бд, на фронт два варианта реакт / реакт редакс либо через CRA с eject конфигурации и ее коррекцией с последующим проксированием через нгинкс либо если требуется SSR то подключение next.js.
В любом случае каркас проекта и требования к тому что пишут разрабы нужно устанавливать сразу, но если проект без особых заморочек, не думаю что это проблемой может быть.
Ответ написан
Комментировать
@itexams
Не рекомендую использовать Метеор. Это инструмент в первую очередь для прототипирования, а не для продакшн. Столкнулись с этим на проекте, который начал расти из прототипа в приложение, которым активно пользовались одновременно несколько человек - загружали картинки и их разметки.

Как итог - 100% загрузка памяти и адские тормоза. В итоге с метеором пришлось расстаться.
Ответ написан
Комментировать
@akafloa
разработчик
Angular это полноценный фреймворк а не только для клиента, там есть всё что Вам нужно
Ответ написан
node.js не для этого придумали, там всё на микросервисах работает.
Ответ написан
@PxlFxr
Свела меня судьба в symphony и laravel, и было очень комфортно

Ну вот.
но это php

И что? Современный php очень неплох. Сложившееся мнение о php не отражает текущей ситуации.

Недавно попробовал laravel, понравилось. Весь требуемый вами функционал там есть.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы