Самые популярные фреймворки Node.js в 2022 году
Опубликовано: 2022-04-15- Как были получены эти данные?
- Текущие тенденции 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 — больше, чем просто React Framework — популярность Next.js продолжает расти благодаря абсурдно высоким темпам разработки. Переход от Next.js 10 к Next.js 12 занял всего год.
Основная концепция Next.js заключается в том, что он использует React в качестве основы, но выполняет всю структуру рендеринга на стороне сервера с помощью собственной спецификации. Поскольку рендеринг выполняется на стороне сервера, вам не нужно рендерить страницы на стороне клиента, что обеспечивает огромные преимущества в производительности и SEO там, где это необходимо.
Одна из причин, по которой Next получила такое массовое распространение, заключается в том, что она устраняет необходимость в создании собственной серверной части. В то же время предоставляя разумные способы оптимизации производительности ваших приложений из коробки. Vercel поддерживает его.
№2 – Гнездо

NestJS незаметно удалось получить значительное одобрение со стороны бэкэнд-сообщества. Одна из основных философий Nest заключается в том, что, хотя такие фреймворки, как React, ускоряют разработку интерфейса, многие такие фреймворки с трудом решают проблему архитектуры приложений. Nest решает эту проблему с помощью подхода, ориентированного на архитектуру.
Что характерно для бэкэнда, конечно.
Nest основан на трех основных компонентах (вдохновленных Angular) — Controllers , Providers и Modules . Использование модулей — это то, как Nest пытается решить проблему сложной иерархии приложений. Каждый компонент может быть категоризирован в отдельный модуль, внутри которого вы настраиваете свои собственные контроллеры, зависимости и конкретных провайдеров.
№3 – Страпи

Безголовый — это все в моде в нынешнем внешнем повествовании. И Strapi проделала большую работу, позиционируя себя как одну из ведущих платформ Headless CMS.
Итак, что такое Страпи? С практической точки зрения, Strapi — это серверная часть вашего внешнего приложения. В некотором смысле, Strapi избавляет вас от необходимости изучать такие фреймворки, как Express, потому что большую часть работы он может выполнять через свой API.
Это включает в себя управление вашим контентом через настраиваемый пользовательский интерфейс, оперативные конечные точки для GraphQL и REST, управление пользователями (роли и т. д.) и отдельный интерфейс плагина, на который вы можете опираться. Strapi полностью независим от фреймворка и интегрируется практически с любым языком, фреймворком или интерфейсной библиотекой.

#4 – Ремикс

Remix — это полнофункциональный фреймворк, созданный людьми, разработавшими React Router.
Я считаю, что Remix также является одним из самых быстрорастущих фреймворков с полным стеком, которые мы видели в последние годы. Итак, почему? Во-первых, Remix пытается максимально интегрироваться с веб-стандартами, предоставляя краткие API-интерфейсы для общих кодов состояния и взаимодействия с пользователем.
В отличие от традиционного фреймворка, Remix не создает каскадные (компонентные) структуры. Вместо этого данные загружаются параллельно на стороне сервера, а затем используются в качестве HTML-страницы. Это также означает, что функции на основе JavaScript (например, отправка форм) не нарушат работу сайта, если у пользователя отключен JavaScript.
# 5 - Нуст

Nuxt 3 (для Vue 3) находится в стадии открытого бета-тестирования: следите за новостями.
Nuxt основывается на Vue как на полнофункциональной платформе для создания надежных приложений. Это также мета-фреймворк, созданный для радикального улучшения опыта разработки Vue с полным стеком. Nuxt поддерживает SSR, SPA и статические сгенерированные страницы.
Основное преимущество для разработчиков Vue заключается в том, что Nuxt может предварительно отображать представления и обслуживать их как статические файлы. Это, естественно, дает отличные результаты для SEO-оптимизации и значительно повышает интерактивность. Но есть и недостатки.
В то время как у Vue есть постоянный канал на стороне клиента, у Nuxt его нет. Таким образом, взаимодействие с DOM после того, как Nuxt уже отобразил страницу, может оказаться затруднительным.
#6 - СвелтеКит

Svelte имеет статус крутого ребенка в нынешнюю эпоху фронтенда, и команда работает над SvelteKit — полнофункциональной структурой, которая строится поверх (заменяет) Sapper. SvelteKit отличается сложной системой маршрутизации на основе файлов.
Основная цель SvelteKit — ускорить веб-разработку за счет устранения некоторых наиболее распространенных узких мест. Внедрив Snowpack, Vite и другие внешние инструменты, SvelteKit может обеспечить многофункциональный опыт разработки.
Наконец, SvelteKit реализует процесс гидратации. Возможность сохранять активное состояние для элементов DOM, которые были обработаны на стороне сервера.
# 7 - Укрепить

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

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

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

Adonis — это первая на основе TypeScript внутренняя структура MVC, созданная для Node.js. Имейте в виду, что, несмотря на то, что Adonis описывает себя как серверную структуру, с ним также можно выполнять полноценную разработку.
Одной из основных причин, по которой разработчики любят Adonis, является встроенная поддержка TypeScript.
А также поддержка ORM (объектно-реляционное сопоставление), надежные методы обеспечения безопасности и понятная документация.
И последнее, но не менее важное: Adonis интегрируется с экосистемой Node.js на фундаментальном уровне, поэтому наличие предыдущего опыта разработки Node практически обязательно.
#11 – Краеугольный камень

Последний фреймворк Node.js в этом списке — Keystone. И, как и Express, он существует почти с первого дня. Это делает Keystone зрелой платформой, предоставляющей конкретные инструменты и интеграции для создания удобной среды разработки.
Некоторые примечательные функции (многие из которых были усовершенствованы с годами) в Keystone включают автоматизированный CRUD через GraphQL API, который вы можете расширить. Кроме того, вы можете создавать и реализовывать свои собственные компоненты React.js.
Keystone используется в различных областях разработки и отлично работает с мобильными приложениями, практичными веб-сайтами, магазинами электронной коммерции и многим другим.
Мета, натив и щепотка Безголового
Прошло довольно много времени с тех пор, как я в последний раз делал подобный обзор. Тогда все было намного проще, и хотя Compound и Locomotive нигде не найти, приятно видеть, что Keystone и Express проходят испытание временем.
Я также могу сказать, что Node.js вызывает много шума. Я верю, что некоторые люди несчастливы и чувствуют себя застрявшими в этом. И идея менеджеров пакетов (npm) также начинает стареть, поскольку пакеты продолжают добавлять кучу за кучами ненужных размеров пакетов в небольшой в остальном проект.
Но, как бы там ни было, популярность каждого фреймворка говорит сама за себя. В целом, разработчики довольны работой с мета-фреймворками, и это может быть связано с тем, что они также оптимизируют разработку полного стека. Это в основном устраняет необходимость заново изучать новый любимый фреймворк с нуля.