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.