# Framework

> Un esqueleto ya armado para una app: define la estructura y llama a tu código.

- Nivel: Intermedio
- Temas: Software
- URL: https://tidbit.legios.com.ar/es/framework/
- En inglés: [Framework](https://tidbit.legios.com.ar/framework/)

Un **framework** (marco de trabajo) es un conjunto grande de código ya hecho que le da a una aplicación su estructura básica, para que quienes programan solo escriban lo que es propio de su producto. Un framework web, por ejemplo, ya sabe recibir pedidos, leer formularios, hablar con una base de datos y devolver páginas; vos completás qué muestran tus páginas y cuáles son tus reglas.

La diferencia clave con una biblioteca de software es quién manda. A una biblioteca la llamás vos cuando la necesitás, como sacar una herramienta de un cajón. Un framework te llama a vos: maneja el ciclo principal y ejecuta tu código en el momento justo, del tipo "cuando alguien abra esta página, corré esta función". Los ingenieros le dicen **inversión de control**.

Algunos ejemplos conocidos son Angular y Vue para armar interfaces en el navegador, Django y Ruby on Rails para el backend de una web, y Spring para software empresarial en Java. Elegir uno es una decisión grande, porque define cómo se organiza todo el proyecto y es difícil cambiarlo después. A cambio, los equipos avanzan rápido y siguen convenciones que la gente nueva ya conoce.

## Una analogía

La estructura de una casa prefabricada: las paredes, el techo y el recorrido de los caños ya están. Vos elegís la pintura, la cocina y los muebles, pero no podés mover fácilmente una pared maestra.

## Para quedarse

- Da la estructura de una app; vos completás las partes específicas.
- Llama a tu código, al revés que una biblioteca, a la que llamás vos.
- Ejemplos: Angular, Vue, Django, Ruby on Rails, Spring.
- Ahorra mucho trabajo, pero cuesta reemplazarlo una vez elegido.

## Para seguir leyendo

- [Introducción a los frameworks del lado del cliente (MDN, en inglés)](https://developer.mozilla.org/en-US/docs/Learn_web_development/Core/Frameworks_libraries/Introduction)
- [Framework en Wikipedia](https://es.wikipedia.org/wiki/Framework)

## Términos relacionados

- [Base de datos](https://tidbit.legios.com.ar/es/database/): Un depósito ordenado de datos que los programas consultan y actualizan sin riesgo.
- [Biblioteca de software](https://tidbit.legios.com.ar/es/software-library/): Código ya hecho para una tarea común que se enchufa dentro de otros programas.
- [Navegador web](https://tidbit.legios.com.ar/es/web-browser/): La app que trae páginas web desde internet y las dibuja en tu pantalla.
- [Frontend y backend](https://tidbit.legios.com.ar/es/frontend-and-backend/): La parte de una app que ves y tocás, y la parte que trabaja detrás.
