¿Qué es un framework?


Imagina que estás construyendo una pequeña aplicación web: cuentas de usuario, un feed, una página de configuración. Antes de que cualquiera de tus propias ideas aparezca en pantalla, necesitas código que convierta URLs en páginas, código que hable con una base de datos, código que mantenga las contraseñas seguras, y código que redibuje la pantalla cuando algo cambia. Nada de eso es idea de tu aplicación. Toda aplicación lo necesita, y la mayoría es igual de proyecto en proyecto.
Podrías escribir toda esa tubería tú mismo, y la gente lo hizo, durante años. Es lento, es donde viven los bugs sutiles, y cada equipo terminaba con una versión ligeramente diferente y ligeramente rota de la misma maquinaria. Un framework es la respuesta acumulada: la tubería compartida, escrita una sola vez y endurecida por miles de proyectos, empaquetada con una estructura que te dice dónde va tu propio código. Construyes las partes que hacen tu proyecto único; el framework maneja las partes que todo proyecto repite.
Los frameworks no son algo de la web. Existen en todas partes donde se construyen programas, y este capítulo trata sobre la idea en sí, en cualquier lenguaje y en cualquier campo.
Qué es un framework (y qué es una librería)
La palabra se usa de manera imprecisa, así que aquí está la distinción que realmente importa, en código:
// Una librería: tu código está a cargo y llama la librería cuando es útil.
const label = dateLibrary.format(order.createdAt, "MMM D");
// Un framework: el framework está a cargo y llama el código que conectas.
export default function OrdersPage() {
return listOfOrders();
}La primera línea eres tú dirigiendo: tu programa se ejecuta y toma prestada una herramienta para un trabajo. La segunda es diferente en esencia. Nunca llamas a OrdersPage tú mismo. La escribes, la pones donde el framework la espera, y el framework la llama en el momento correcto, aquí, cuando un visitante abre la página de pedidos.
Ese cambio tiene un nombre: inversión de control. Con una librería, tu código controla el flujo del programa y toma prestadas herramientas. Con un framework, el framework controla el flujo, y tu código rellena los espacios en blanco que deja para ti. Un atajo útil: llamas una librería; un framework te llama a ti.
La misma forma aparece en cada rincón de la programación. Django recibe la solicitud web y llama tu función de vista. Flutter ejecuta la aplicación y pregunta a tus widgets qué dibujar. Unity ejecuta el bucle de juego y llama tus scripts cada fotograma. pytest encuentra tus funciones de prueba y las ejecuta por ti. Diferentes campos, una idea: el framework posee el motor, y tú suministras las partes para las que fue construido.
Si una imagen ayuda: una librería es una caja de herramientas a tu lado mientras construyes, y alcanzas una herramienta cada vez que es útil. Un framework es más parecido al marco de un edificio, ya en pie cuando llegas. Las paredes, el cableado y la tubería tienen sus lugares, y tu trabajo va en los cuartos que hacen el edificio tuyo. Ambos te ahorran esfuerzo; la diferencia es quién decide la forma de la construcción.
Qué gana un framework y qué cuesta
El caso para un framework es concreto. Problemas que te tomaría semanas resuelven ya, y resueltos por gente que golpeó los casos extremos difíciles primero: manejo de contraseñas, validación de formularios, enrutamiento, renderizado. Tu proyecto obtiene una estructura que un compañero nuevo puede reconocer en minutos, porque es la misma estructura que todo otro proyecto en ese framework. E heredas un ecosistema: plugins, tutoriales, preguntas respondidas, y un fondo de contratación de gente que ya sabe cómo moverse.
Los costos son igualmente concretos, y merecen la misma mirada directa. Un framework es una dependencia grande que no controlas, con sus propios bugs, su propio ritmo y sus propias opiniones. Hay una curva de aprendizaje antes de que tu primera página se renderice, y algo de lo que aprendes es conocimiento sobre el framework en lugar de sobre programación. Tu código se dobla a sus formas, lo que hace más difícil irte cuanto más tiempo te quedes. Y los frameworks se mueven: llegan versiones mayores, los patrones se repiensan, y mantenerse al día es trabajo continuo que no tenías con código simple.
Ninguna lista gana por sí sola. El balance depende enteramente del proyecto, así que la pregunta a hacer de cualquier framework es "¿hace este uno este proyecto más simple". Un framework se gana su lugar haciendo tu proyecto más simple. Cuando lo hace, úsalo con gusto. Cuando no lo hace, los próximos dos capítulos tratan sobre reconocer eso temprano.
Hacia dónde va esto a continuación
Con la idea en su lugar, la siguiente pregunta natural es qué hay realmente afuera: The kinds of frameworks recorre las principales familias, desde web hasta juegos hasta testing, con las opciones más populares en cada una. Después de eso, Choosing and learning a framework se vuelve práctico sobre escoger uno, aprender uno, y saber cuándo no necesitas ninguno en absoluto. Y si los ejemplos de JavaScript de arriba te sintieron desconocidos, el track de JavaScript cubre el lenguaje en sí, que es el primer paso correcto antes de cualquier framework construido en él.

