Skip to content

O objetivo desse projeto é te dar a compreensão clara sobre a diferença entre frameworks minimalistas (em inglês conhecido como minimalist ou lightweight) e os opinativos (em inglês conhecido como opinionated ou batteries-included).

No módulo Backend, você teve contato com um framework minimalista: o ExpressJS. Ele te fornece apenas as funcionalidades mais essenciais para a construção de uma aplicação web. Muitas das vezes são consideradas como apenas uma biblioteca, não um framework.

Já os frameworks opinativos vão te entregar, logo de início, um projeto com várias bibliotecas pré-selecionadas já instaladas e, de certa forma, eles te sugerem/obrigam a usar uma estrutura geral mais ou menos rígida.

Estude ambas abordagens minimalistas e opinativas e usando ambas suas linguagens escolhidas.

Minimalistas

Os frameworks minimalistas são mais comuns no NodeJS (Express), no PHP (Slim) e no Python (Flask).

Por outro lado, aplicações Java e C# geralmente são escritas em frameworks opinativos, mas também existem opções de frameworks minimalistas nessas linguagens.

E todas as linguagens possuem outros frameworks minimalistas disponíveis. Express, Slim e Flask foram selecionados devido a suas popularidades.

Aprenda um framework opinativo mesmo que você se identifique com os minimalista, pois você vai aprender sobre várias funcionalidades comuns que você vai precisar criar mais cedo ou mais tarde.

Baixe alguns projetos de NodeJS e da sua segunda linguagem (exceto Java e C#), execute-os, leia seus arquivos, tente fazer qualquer modificação em seu código ou reconstrua algum dos projetos.

NodeJS: Express

Javascript

Typescript

PHP: Slim

Python: Flask

Opinativos

Como esses frameworks incluem várias bibliotecas e conceitos, é seu dever compreender como funcionam essas peças embutidas no código do seu projeto, como:

  • Estrutura de pastas e arquivos
  • Comandos CLI
  • Migrations e Seeders
  • ORM
  • Roteamento
  • Templates
  • Sessões
  • Autenticação
  • Validações
  • Segurança
  • Cache
  • Testes
  • Gerenciamento de Tarefas
  • WebSockets
  • Internacionalização

Todas as linguagens possuem outros frameworks opinativos disponíveis. NestJS, Spring Boot, .NET, Laravel e Django foram selecionados devido a suas popularidades.

Nesta lista de repositórios, inclui projetos grandes, categorizados como "Produtos", pois ainda é possível de enxergar o framework no meio de tanto código específico de negócio, diferentemente de produtos desenvolvidos com frameworks minimalistas.

Também inclui o projeto Realworld do CodebaseShow. É um ótimo projeto para comparar a abordagem geral de cada uma das linguagens e frameworks. A seção Typescript da lista anterior também conta com um codebase desse projeto.

Baixe alguns projetos de NodeJS e da sua segunda linguagem, execute-os, leia seus arquivos, tente fazer qualquer modificação em seu código ou reconstrua algum dos projetos.

Java: Spring

Simple

Conduit API

Products

C#: .NET

Simple

Conduit API

Products

PHP: Laravel

Simple

Conduit API

Conduit Fullstack

Products

Python: Django

Simple

Conduit API

Conduit Fullstack

Products

NestJS

Simple

Conduit API

Conduit Fullstack

Products