Самые популярные фреймворки Node.js в 2022 году

Опубликовано: 2022-04-15
Резюме » Node.js остается самой популярной средой выполнения JavaScript после многих лет стабильного правления. Но ландшафт фреймворков Node.js сильно изменился за последнее время. Все больше и больше фреймворков создаются как гибридные (мета) решения, предназначенные не только для серверных, но и для разработчиков полного стека. В этой статье мы рассмотрим текущие тенденции и рассмотрим самые популярные фреймворки Node.js.

Оглавление
  • Как были получены эти данные?
  • Текущие тенденции Node.js
  • #1 – Next.js
  • №2 – Гнездо
  • №3 – Страпи
  • #4 – Ремикс
  • # 5 - Нуст
  • #6 - СвелтеКит
  • # 7 - Укрепить
  • #8 – Красное дерево
  • #9 – Экспресс
  • #10 – Адонис
  • #11 – Краеугольный камень
  • Мета, натив и щепотка Безголового

Express.js так же стар, как Node.js, и хотя Express по-прежнему остается феноменальной серверной структурой, новое поколение инструментов и наборов оставляет свой след.

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

Как были получены эти данные?

Все данные получены из опросов, таких как State of JavaScript, Stack Overflow Developer Survey, и из личного опыта работы с различными проектами. Это не обзор, основанный на том, какой фреймворк Node.js имеет наибольшее количество звезд GitHub.

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

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

Например, вы можете взять любое репо и запустить его за считанные минуты.

Текущие тенденции Node.js

В этом посте вы заметите, что многие фреймворки, упомянутые в этой статье, основаны на интерфейсном фреймворке. Это также называется мета-фреймворком . Итак, что с этим делать и почему такой подход?

Если мы посмотрим на что-то вроде React, способ рендеринга страницы осуществляется через CSR — рендеринг на стороне клиента. Как только запрос сделан, браузеру предоставляется простой HTML-файл без фактического содержимого страницы. Таким образом, браузер делает второй круг, чтобы получить документ JavaScript, содержащий содержимое страницы, затем доставляет его и отображает фактическую страницу.

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

Его также часто называют SPA или одностраничным приложением.

И вот недостатки этого — КСО — подхода:

  • Кэширование . Поскольку все содержимое страницы отображается с помощью JavaScript, на странице нет фактического HTML-контента, который можно было бы кэшировать.
  • SEO . В то время как поисковые роботы становятся «умнее», существуют определенные проблемы с тем, что роботы индексируют контент, зависящий исключительно от JavaScript.
  • Рендеринг . Первоначальный рендеринг часто бывает медленным и не отвечает до тех пор, пока не завершится загрузка всего JavaScript.

Итак, в этом контексте идея таких фреймворков, как Next и Nuxt, состоит в том, чтобы взять интерфейсный фреймворк, но дать ему SSR (рендеринг на стороне сервера) через Node.js.

Говоря о SSR, Ник Джонстон опубликовал интересную статью под названием «Абсурдная сложность рендеринга на стороне сервера». И есть также соответствующая ветка Hacker News с довольно большим обсуждением этой темы. Хотя в ближайшем будущем мало что изменится, я считаю, что некоторые из этих концепций приведут к значительным изменениям в работе некоторых фреймворков.


#1 – Next.js

Next.js от Vercel

Next.js — больше, чем просто React Framework — популярность Next.js продолжает расти благодаря абсурдно высоким темпам разработки. Переход от Next.js 10 к Next.js 12 занял всего год.

Основная концепция Next.js заключается в том, что он использует React в качестве основы, но выполняет всю структуру рендеринга на стороне сервера с помощью собственной спецификации. Поскольку рендеринг выполняется на стороне сервера, вам не нужно рендерить страницы на стороне клиента, что обеспечивает огромные преимущества в производительности и SEO там, где это необходимо.

Одна из причин, по которой Next получила такое массовое распространение, заключается в том, что она устраняет необходимость в создании собственной серверной части. В то же время предоставляя разумные способы оптимизации производительности ваших приложений из коробки. Vercel поддерживает его.

Документы веб-сайта GitHub

№2 – Гнездо

NestJS

NestJS незаметно удалось получить значительное одобрение со стороны бэкэнд-сообщества. Одна из основных философий Nest заключается в том, что, хотя такие фреймворки, как React, ускоряют разработку интерфейса, многие такие фреймворки с трудом решают проблему архитектуры приложений. Nest решает эту проблему с помощью подхода, ориентированного на архитектуру.

Что характерно для бэкэнда, конечно.

Nest основан на трех основных компонентах (вдохновленных Angular) — Controllers , Providers и Modules . Использование модулей — это то, как Nest пытается решить проблему сложной иерархии приложений. Каждый компонент может быть категоризирован в отдельный модуль, внутри которого вы настраиваете свои собственные контроллеры, зависимости и конкретных провайдеров.

Документы веб-сайта GitHub

№3 – Страпи

Страпи

Безголовый — это все в моде в нынешнем внешнем повествовании. И Strapi проделала большую работу, позиционируя себя как одну из ведущих платформ Headless CMS.

Итак, что такое Страпи? С практической точки зрения, Strapi — это серверная часть вашего внешнего приложения. В некотором смысле, Strapi избавляет вас от необходимости изучать такие фреймворки, как Express, потому что большую часть работы он может выполнять через свой API.

Это включает в себя управление вашим контентом через настраиваемый пользовательский интерфейс, оперативные конечные точки для GraphQL и REST, управление пользователями (роли и т. д.) и отдельный интерфейс плагина, на который вы можете опираться. Strapi полностью независим от фреймворка и интегрируется практически с любым языком, фреймворком или интерфейсной библиотекой.

Документы веб-сайта GitHub

#4 – Ремикс

Ремикс

Remix — это полнофункциональный фреймворк, созданный людьми, разработавшими React Router.

Я считаю, что Remix также является одним из самых быстрорастущих фреймворков с полным стеком, которые мы видели в последние годы. Итак, почему? Во-первых, Remix пытается максимально интегрироваться с веб-стандартами, предоставляя краткие API-интерфейсы для общих кодов состояния и взаимодействия с пользователем.

В отличие от традиционного фреймворка, Remix не создает каскадные (компонентные) структуры. Вместо этого данные загружаются параллельно на стороне сервера, а затем используются в качестве HTML-страницы. Это также означает, что функции на основе JavaScript (например, отправка форм) не нарушат работу сайта, если у пользователя отключен JavaScript.

Документы веб-сайта GitHub

# 5 - Нуст

NuxtJS

Nuxt 3 (для Vue 3) находится в стадии открытого бета-тестирования: следите за новостями.

Nuxt основывается на Vue как на полнофункциональной платформе для создания надежных приложений. Это также мета-фреймворк, созданный для радикального улучшения опыта разработки Vue с полным стеком. Nuxt поддерживает SSR, SPA и статические сгенерированные страницы.

Основное преимущество для разработчиков Vue заключается в том, что Nuxt может предварительно отображать представления и обслуживать их как статические файлы. Это, естественно, дает отличные результаты для SEO-оптимизации и значительно повышает интерактивность. Но есть и недостатки.

В то время как у Vue есть постоянный канал на стороне клиента, у Nuxt его нет. Таким образом, взаимодействие с DOM после того, как Nuxt уже отобразил страницу, может оказаться затруднительным.

Документы веб-сайта GitHub

#6 - СвелтеКит

SvelteKit

Svelte имеет статус крутого ребенка в нынешнюю эпоху фронтенда, и команда работает над SvelteKit — полнофункциональной структурой, которая строится поверх (заменяет) Sapper. SvelteKit отличается сложной системой маршрутизации на основе файлов.

Основная цель SvelteKit — ускорить веб-разработку за счет устранения некоторых наиболее распространенных узких мест. Внедрив Snowpack, Vite и другие внешние инструменты, SvelteKit может обеспечить многофункциональный опыт разработки.

Наконец, SvelteKit реализует процесс гидратации. Возможность сохранять активное состояние для элементов DOM, которые были обработаны на стороне сервера.

Документы веб-сайта GitHub

# 7 - Укрепить

Укрепить

Фреймворк Fastify ориентирован на производительность, и отдельные тесты показали, что он может обрабатывать до 60 000 запросов в секунду. Вы можете расширить Fastify (помимо и без того отличных инструментов) с помощью хуков и плагинов. И, несмотря на то, что Fastify не является фреймворком, ориентированным на TypeScript, он поддерживает TypeScript.

Говоря о плагинах, большая часть разработки Fastify происходит через них. Настолько, что у Fastify есть официальный репозиторий как для созданных сообществом, так и для плагинов, созданных командой Fastify. Идея плагинов заключается в том, что они обеспечивают чистую системную архитектуру и устраняют необходимость перехода к альтернативным фреймворкам. Это делает Fastify особенно полезным для создания API с низкими накладными расходами и высокой производительностью в реальном времени.

Документы веб-сайта GitHub

#8 – Красное дерево

Редвуд

Вы любите API? Вам нравится JAMStack? Если ответ положительный, вам понравится RedwoodJS. Это полнофункциональный фреймворк для веб-приложений, использующий множество современных технологий. И эти технологии включают GraphQL, Prisma, Storybook и Jest. Внешний интерфейс в Redwood построен на основе React, и вы также получаете полную поддержку TypeScript.

Документы веб-сайта GitHub

#9 – Экспресс

Экспресс-фреймворк Node.js

Экспресс впал в немилость? Не совсем. Фреймворк по-прежнему чрезвычайно популярен и любим, но не так сильно, как другие крупные игроки. Для команды, которая годами работает с Express, нет смысла переходить на что-то другое, так как нет принципиальных проблем. Многие фреймворки по-прежнему основаны на Express.

Документы веб-сайта GitHub

#10 – Адонис

Адонис

Adonis — это первая на основе TypeScript внутренняя структура MVC, созданная для Node.js. Имейте в виду, что, несмотря на то, что Adonis описывает себя как серверную структуру, с ним также можно выполнять полноценную разработку.

Одной из основных причин, по которой разработчики любят Adonis, является встроенная поддержка TypeScript.

А также поддержка ORM (объектно-реляционное сопоставление), надежные методы обеспечения безопасности и понятная документация.

И последнее, но не менее важное: Adonis интегрируется с экосистемой Node.js на фундаментальном уровне, поэтому наличие предыдущего опыта разработки Node практически обязательно.

Документы веб-сайта GitHub

#11 – Краеугольный камень

Краеугольный камень

Последний фреймворк Node.js в этом списке — Keystone. И, как и Express, он существует почти с первого дня. Это делает Keystone зрелой платформой, предоставляющей конкретные инструменты и интеграции для создания удобной среды разработки.

Некоторые примечательные функции (многие из которых были усовершенствованы с годами) в Keystone включают автоматизированный CRUD через GraphQL API, который вы можете расширить. Кроме того, вы можете создавать и реализовывать свои собственные компоненты React.js.

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

Документы веб-сайта GitHub

Мета, натив и щепотка Безголового

Прошло довольно много времени с тех пор, как я в последний раз делал подобный обзор. Тогда все было намного проще, и хотя Compound и Locomotive нигде не найти, приятно видеть, что Keystone и Express проходят испытание временем.

Я также могу сказать, что Node.js вызывает много шума. Я верю, что некоторые люди несчастливы и чувствуют себя застрявшими в этом. И идея менеджеров пакетов (npm) также начинает стареть, поскольку пакеты продолжают добавлять кучу за кучами ненужных размеров пакетов в небольшой в остальном проект.

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