O que é um framework e quando usar?
A diferença entre linguagem, biblioteca e framework, por que existem, e como decidir se vale a pena usar um em um projeto.
"Aprenda React" ou "use Django" são conselhos comuns, mas antes de aprender qualquer framework, vale entender o que ele é, e por que ele existe.
A diferença entre linguagem, biblioteca e framework
Linguagem de programação é a base: JavaScript, Python, Java. Define a sintaxe e o que você pode fazer.
Biblioteca é um conjunto de funções prontas que você usa quando precisa. Você chama a biblioteca, ela não chama você. Exemplos: requests em Python para HTTP, lodash em JavaScript para manipulação de dados.
Framework é diferente: ele define a estrutura do seu projeto. O framework chama o seu código, não o contrário. Você preenche as partes que ele deixou em branco (autenticação, rotas, views, banco de dados).
A distinção técnica mais usada: inversão de controle. No framework, o controle do fluxo fica com ele. Na biblioteca, o controle fica com você.
Por que frameworks existem
Sem framework, você resolveria os mesmos problemas toda vez que começa um projeto:
- Como organizar as pastas e arquivos?
- Como mapear URLs para funções?
- Como lidar com o banco de dados?
- Como separar lógica de negócio da camada de apresentação?
Frameworks resolvem esses problemas com convenções: uma forma padrão de fazer as coisas que toda a equipe conhece. Um dev que conhece Django consegue entrar em qualquer projeto Django e entender a estrutura.
Exemplos no mercado brasileiro
Front-End:
- React (Meta): biblioteca de componentes. Você escolhe o roteamento, o estado, tudo. Tecnicamente mais biblioteca que framework, mas o ecossistema ao redor (React Router, Redux) forma um framework de fato.
- Next.js: framework em cima do React. Define como funciona o roteamento (por arquivos), como fazer SSR, como fazer deploy.
- Vue.js / Angular: frameworks mais completos que já trazem tudo integrado.
Back-End:
- Express.js (Node): minimalista. Dá liberdade máxima, mas você monta a arquitetura.
- NestJS (Node): framework opinionado. Estrutura sua app em módulos, controllers e services.
- Django (Python): "batteries included", tem ORM, autenticação, admin, tudo nativo.
- FastAPI (Python): mais leve, focado em APIs.
- Spring Boot (Java): framework dominante no ecossistema Java corporativo.
- Laravel (PHP): framework mais popular em PHP.
Quando usar um framework
Use quando:
- Você está construindo algo maior que um script simples
- A equipe precisa de estrutura compartilhada
- O framework resolve problemas que você teria que resolver do zero de qualquer forma
Não use quando:
- É um script pequeno ou automação simples
- Você está aprendendo os fundamentos da linguagem (aprenda a linguagem antes do framework)
- O framework traz mais complexidade do que o problema exige
Para quem está começando
A recomendação mais comum é: entenda a linguagem antes de aprender o framework. Aprender React sem saber JavaScript de verdade cria dependência do framework sem entender o que está acontecendo por baixo.
Mas na prática, muita gente aprende os dois em paralelo, e funciona, desde que você esteja ciente do que é a linguagem e o que é o framework.
- Entendo que o framework define a estrutura do projeto?
- Sei qual linguagem o framework que estou usando é construído em cima?
- Consigo escrever algo básico na linguagem sem o framework?