30/04/2021
Diario de desarrollo. Una aplicación "moderna" con vanilla JS. Introducción
Llevo bastante tiempo pensando en como se escriben las aplicaciones hoy en día y sobre todo el porqué las escribimos así y si hay otra manera de hacerlo. (Abajo del todo están los disclaimers, por si a alguien le interesan).
Coinciden dos cosas opuestas actualmente, por un lado, hay un auge tremendo de frameworks para hacer frontend: React, Vue, Angular, Svelte, ... Y por otro lado, las APIs para trabajar con el navegador (no sólo con el DOM) son cada vez más amigables para los desarrolladores. Quiero decir, cuando jQuery era el rey, era un horror trabajar con el DOM para hacer según que cosas, ahora sin embargo casi todos los navegadores tienen un motor de javascript con soporte para casi todo lo que cubre la especificación y para lo que no (o si no tienes la suerte de poder prescindir de navegadores obsoletos) tenemos Babel y/o typescript que te lo transpilan y tu tan feliz.
Entonces, ¿por qué lo más normal es tirar de framework? Pues porque están muy bien, al menos para nosotros los desarrolladores, para los usuarios no tanto (que en realidad a los usuarios nos la repanpinfla con que esté hecho Youtube o Twitter, lo que queremos es que funcionen), pero bueno mi opinión de los frameworks ya está escrita, no me extenderé más.
Y por fin llegamos al meollo de esta entrada, he empezado (otra vez) a hacer una aplicación con algo de miga (sin ser extremadamente compleja) y me he propuesto no usar ningún framework, no tanto porque esté empeñado en reinventar la rueda otra vez, sino porque tengo la cueriosidad de ver todo lo que hace falta para escribir una aplicación sin usar ningún framework pero manteniendo la manera ágil de escribir aplicaciones que nos ofrecen estas herramientas.
Y ya llegó la hora de los disclaimers:
- Ya sé, React y Vue no son frameworks, son librerías, pero para el caso: patatas (además, en un 90% de los casos, les metes su correspondiente router y/o redux (o derivados) y ya no son sólo librerías).
- Todo lo que escriba en esta serie hay que cogerlo como lo que es: un experimento, no me interesa tanto el resultado (a no ser que lo mole todo cuando la acabe) como el proceso.
- Nada de lo que escriba en esta serie es una recomendación de como resolver cada problema, será simplemente mi enfoque en esa iteración, porque además la manera en la que voy a intentar hacer esta aplicación es resolver cada problema de la manera más rápida que se me ocurra y luego ir iterando cuando vea que no es sostenible mi primera solución.
- Mi referencia va a ser Vue, es la librería con la que más experiencia tengo y además me gusta mucho lo accesible que es para empezar con ella.
- Sí, conozco otras librerías que son más ligeras (LitElement, Stencil, ...), pero ver el punto 2.
- Y sí, si vas a hacer un producto desde 0 con un equipo de más de una persona, reconozco que es mejor usar un framework de entrada que hacerlo todo «en casa».