Os frameworks Node.js mais populares em 2022

Publicados: 2022-04-15
Resumo » O Node.js continua sendo o runtime JavaScript mais popular após anos de reinado constante. Mas o cenário dos frameworks Node.js mudou drasticamente na história recente. Mais e mais estruturas são construídas como soluções híbridas (meta), atendendo não apenas aos desenvolvedores de back-end, mas também de pilha completa. Neste artigo, abordaremos as tendências atuais e exploraremos os frameworks Node.js mais populares.

Índice
  • Como esses dados foram obtidos?
  • As tendências atuais do Node.js
  • #1 – Próximo.js
  • #2 – Ninho
  • #3 – Cinta
  • #4 – Remixar
  • #5 – Nuxt
  • #6 – SvelteKit
  • #7 – Fixar
  • #8 – Sequoia
  • #9 – Expresso
  • #10 – Adônis
  • #11 - Pedra angular
  • Meta, nativo e uma pitada de Headless

O Express.js é tão antigo quanto o Node.js e, embora o Express ainda seja uma estrutura de back-end fenomenal, uma nova geração de ferramentas e kits está deixando sua marca.

Mais notavelmente, a tendência mudou para meta frameworks, onde um framework popular como o React é reaproveitado para dar suporte ao desenvolvimento full-stack. A vantagem dessa abordagem é que você pode manter sua experiência em uma estrutura específica e trabalhar simultaneamente em coisas de back-end. Em outras palavras, faça o desenvolvimento full-stack.

Como esses dados foram obtidos?

Todos os dados foram obtidos de pesquisas como State of JavaScript, Stack Overflow Developer Survey e experiência pessoal de trabalho com vários projetos. Esta não é uma revisão baseada em qual framework Node.js tem mais estrelas no GitHub.

Em vez disso, comparei o número de estrelas conquistadas no ano passado. Este é um indicador sólido de quão ativo é um determinado projeto e quão bem os desenvolvedores respondem a ele.

 Se você quiser experimentar qualquer um desses frameworks em um ambiente de tempo real, confira meu artigo sobre plataformas de hospedagem para desenvolvedores. Cada plataforma tem um plano gratuito e quase todas permitem importar um repositório do GitHub e hospedá-lo diretamente. 

Por exemplo, você pode pegar qualquer repo e colocá-lo no ar em questão de minutos.

As tendências atuais do Node.js

Você notará ao longo deste post que muitos dos frameworks mencionados neste artigo são baseados em um framework front-end. Isso também é chamado de meta-framework . Então, qual é o problema com isso e por que essa abordagem?

Se olharmos para algo como o React, a forma como ele renderiza uma página é feita através do CSR – Client-Side Rendering. Depois que uma solicitação é feita, o navegador recebe um arquivo HTML básico sem o conteúdo real da página. Assim, o navegador faz uma segunda viagem para obter o documento JavaScript que contém o conteúdo da página, depois o entrega e renderiza a página real.

E isso continuará acontecendo toda vez que o usuário interagir com a página. Mesmo que o HTML permaneça como está, diferentes solicitações de rota significam que o navegador deve continuar indo e voltando para renderizar o conteúdo que o usuário deseja.

Isso também é frequentemente chamado de SPA ou Aplicativo de página única.

E aqui estão as desvantagens dessa abordagem – CSR –:

  • Cache – Como todo o conteúdo da página é renderizado por meio de JavaScript, não há conteúdo HTML real na página que possa ser armazenado em cache.
  • SEO – Enquanto os rastreadores estão ficando “mais inteligentes”, há problemas definitivos em ter conteúdo de índice de robôs dependente apenas de JavaScript.
  • Renderização – A renderização inicial geralmente é lenta e não responde até que todo o JavaScript termine de carregar.

Então, nesse contexto, a ideia por trás de frameworks como Next e Nuxt é pegar o framework front-end, mas dar a ele SSR (Server-Side Rendering) por meio do Node.js.

Falando em SSR – Nick Johnstone publicou um resumo interessante intitulado “A complexidade absurda da renderização do lado do servidor“. E há também um tópico correspondente do Hacker News com bastante discussão sobre o assunto. Embora não mude muito no futuro próximo, acredito que alguns desses conceitos irão conduzir uma mudança significativa na forma como alguns frameworks operam.


#1 – Próximo.js

Next.js por Vercel

Mais do que ser um React Framework – Next.js continua crescendo em popularidade graças a um ritmo de desenvolvimento absurdamente alto. Next.js 10 para Next.js 12 levou apenas um ano.

O conceito central por trás do Next.js é que ele usa React como base, mas executa toda a estrutura de renderização do lado do servidor por meio de sua própria especificação. Como a renderização é feita no lado do servidor, você não precisa renderizar as páginas no lado do cliente, oferecendo enormes benefícios de desempenho e SEO no que diz respeito.

Uma das razões pelas quais o Next viu essa adoção em massa é que ele elimina a necessidade de criar seu próprio back-end. O tempo todo, fornecendo maneiras significativas de otimizar o desempenho de seus aplicativos imediatamente. Vercel mantém.

Documentos do site GitHub

#2 – Ninho

NestJS

O NestJS conseguiu discretamente atrair uma aprovação significativa da comunidade de back-end. Uma das principais filosofias por trás do Nest é que, embora frameworks como o React acelerem o desenvolvimento de front-end, muitos desses frameworks lutam para resolver o problema da arquitetura do aplicativo. O Nest resolve isso por meio de uma abordagem que prioriza a arquitetura.

O que é específico para o back-end, é claro.

O Nest é baseado em três componentes principais (inspirados no Angular) – Controladores , Provedores e Módulos . O uso de Módulos é como o Nest tenta resolver o problema da hierarquia complexa de aplicativos. Cada componente pode ser categorizado em um módulo separado, no qual você configura seus próprios controladores, dependências e provedores específicos.

Documentos do site GitHub

#3 – Cinta

Strapi

Headless é toda a raiva na narrativa atual de front-end. E o Strapi fez um ótimo trabalho ao se posicionar como uma das principais estruturas de CMS sem cabeça.

Então, o que é Strapi? Em termos mais práticos, o Strapi é o back-end do seu aplicativo de front-end. De certa forma, o Strapi elimina a necessidade de você aprender um framework como o Express porque ele pode fazer a maior parte do trabalho braçal por meio de sua API.

Isso inclui o gerenciamento de seu conteúdo por meio de uma interface do usuário personalizada, endpoints dinâmicos para GraphQL e REST, gerenciamento de usuários (funções, etc.) e uma interface de plug-in separada na qual você pode criar. O Strapi é completamente independente de framework e se integra a praticamente qualquer linguagem, framework ou biblioteca de front-end.

Documentos do site GitHub

#4 – Remixar

Remixar

O Remix é um framework full-stack construído pelas pessoas que criaram o React Router.

Acredito que o Remix também é um dos frameworks full-stack de mais rápido crescimento que vimos nos últimos anos. Então, como assim? Por um lado, o Remix tenta integrar o máximo possível com Web Standards, fornecendo APIs concisas para códigos de status comuns e interações do usuário.

Ao contrário de uma estrutura tradicional, o Remix não cria estruturas baseadas em cascata (componentes). Em vez disso, os dados são carregados em paralelo no lado do servidor e servidos como uma página HTML. Isso também significa que os recursos baseados em JavaScript (como envios de formulários) não interromperão o site se o usuário tiver o JavaScript desabilitado.

Documentos do site GitHub

#5 – Nuxt

NuxtJS

Nuxt 3 (para Vue 3) está em beta aberto: fique de olho.

O Nuxt se baseia no Vue como uma estrutura de pilha completa para criar aplicativos robustos. É também um meta-framework, criado para melhorar drasticamente a experiência de desenvolvimento full-stack em Vue. O Nuxt oferece suporte a SSR, SPA e páginas geradas estáticas.

A principal vantagem para os desenvolvedores Vue é que o Nuxt pode pré-renderizar as visualizações e servi-las como arquivos estáticos. Isso naturalmente traz ótimos resultados para otimização de SEO e proporciona um aumento significativo na interatividade. Mas há algumas desvantagens também.

Enquanto o Vue tem um canal persistente do lado do cliente, o Nuxt não. Portanto, interagir com o DOM depois que o Nuxt já renderizou a página pode ser difícil.

Documentos do site GitHub

#6 – SvelteKit

SvelteKit

Svelte tem o status de garoto legal na era atual do front-end, e a equipe está trabalhando no SvelteKit – uma estrutura de pilha completa que se baseia (substitui) no Sapper. O SvelteKit se destaca com um intrincado sistema de roteamento baseado em arquivos.

O objetivo principal do SvelteKit é acelerar o desenvolvimento web removendo alguns dos gargalos mais comuns. Ao implementar Snowpack, Vite e outras ferramentas externas – o SvelteKit pode fornecer uma experiência de desenvolvimento rica em recursos.

Por fim, SvelteKit implementa o processo de Hidratação. A capacidade de reter o estado ativo para elementos DOM que foram renderizados no lado do servidor.

Documentos do site GitHub

#7 – Fixar

Fixar

A estrutura Fastify tem tudo a ver com desempenho, e benchmarks individuais mostraram que ela pode lidar com até 60.000 solicitações por segundo. Você pode estender o Fastify (além de ferramentas já excelentes) por meio de Hooks e Plugins. E, apesar de não ser um framework para TypeScript, Fastify suporta TypeScript.

Falando em Plugins, muito do desenvolvimento do Fastify acontece através deles. Tanto que o Fastify possui um repositório oficial tanto para plugins feitos pela comunidade quanto para plugins feitos pela equipe do Fastify. A ideia por trás dos plugins é que ele fornece uma arquitetura de sistema limpa e elimina a necessidade de saltar para estruturas alternativas. Isso torna o Fastify particularmente útil para criar APIs de baixa sobrecarga com forte desempenho em tempo real.

Documentos do site GitHub

#8 – Sequoia

Redwood

Você ama APIs? Gostou do JAMstack? Se a resposta for sim, você vai adorar o RedwoodJS. É uma estrutura de aplicativo da Web de pilha completa que utiliza muitas tecnologias modernas. E essas tecnologias incluem GraphQL, Prisma, Storybook e Jest. O front-end no Redwood é construído em cima do React, e você também obtém suporte completo ao TypeScript.

Documentos do site GitHub

#9 – Expresso

Estrutura expressa do Node.js

O Express caiu em desgraça? Não exatamente. O framework ainda é extremamente popular e amado, mas não tanto quanto os outros grandes players. Para uma equipe que trabalha com o Express há anos, não faz sentido mudar para outra coisa, pois não há problemas fundamentais. Muitos frameworks ainda se baseiam no Express.

Documentos do site GitHub

#10 – Adônis

Adônis

Adonis é uma estrutura MVC de back-end pioneira em TypeScript criada para Node.js. Lembre-se de que, apesar do Adonis se descrever como uma estrutura de back-end, é bom fazer desenvolvimento full-stack com ele.

Uma das principais razões pelas quais os desenvolvedores amam o Adonis é seu suporte nativo ao TypeScript.

Mas também suporte para ORM (Object Relational-Mapping), práticas de segurança robustas e documentação fácil de seguir.

Por último, mas não menos importante, o Adonis se integra ao ecossistema Node.js em um nível fundamental, portanto, ter experiência prévia no desenvolvimento do Node é praticamente obrigatório.

Documentos do site GitHub

#11 - Pedra angular

Pedra angular

O último framework Node.js nesta lista é o Keystone. E muito parecido com o Express, existe quase desde o primeiro dia. Isso torna o Keystone uma estrutura madura, fornecendo ferramentas e integrações concretas para criar uma experiência amigável ao desenvolvedor.

Alguns recursos notáveis ​​(muitos dos quais foram refinados ao longo dos anos) no Keystone incluem CRUD automatizado por meio da API GraphQL, que você pode estender ainda mais. Além disso, você pode criar e implementar seus próprios componentes React.js.

O Keystone é usado em vários campos de desenvolvimento e funciona bem com aplicativos móveis, sites práticos, vitrines de comércio eletrônico e muito mais.

Documentos do site GitHub

Meta, nativo e uma pitada de Headless

Já faz um bom tempo desde a última vez que fiz uma visão geral como esta. As coisas eram muito mais simples naquela época e, embora o Composto e a Locomotiva não estejam em lugar algum, é bom ver a Keystone e a Express passarem pelo teste do tempo.

Também posso dizer que há um pouco de burburinho em torno do Node.js. Eu acredito que algumas pessoas são infelizes e se sentem presas a isso. E a ideia de gerenciadores de pacotes (npm) também está começando a envelhecer à medida que os pacotes continuam adicionando pilhas e pilhas de tamanhos de pacotes desnecessários a um projeto de pequena escala.

Mas, seja qual for o caso, a popularidade de cada framework fala por si. No geral, os desenvolvedores ficam felizes em trabalhar com meta frameworks, e isso pode ter a ver com o fato de que também simplifica o desenvolvimento full-stack. Isso elimina principalmente a necessidade de reaprender uma nova estrutura favorita do zero.