¡Qué onda, gente! Roberto Hernando por aquí, y hoy les quiero contar una historia que me ha dado mucho que pensar. Llevo años, ¡ufff, cuántos años!, navegando en el mundo de los frameworks de JavaScript. Empecé con Angular, me enamoré de su estructura, de cómo te guiaba paso a paso. Luego, me pasé a Vue.js, que me conquistó por su flexibilidad, por lo bien que se sentía escribir código con él. Son herramientas brutales, no me malinterpreten, han hecho mi vida como desarrollador mucho más fácil y productiva, sin duda.
Pero últimamente, he sentido como una necesidad, casi un cosquilleo, de reconectar con las bases. Ya saben, ese HTML semántico, el CSS que maneja todo el estilo, y ese JavaScript puro, el que corre en el navegador sin una capa de abstracción adicional. Me encontraba en un proyecto, una idea loca que me rondaba la cabeza, donde un framework tan pesado como Angular o Vue se sentía... un poco excesivo. Era como usar un camión para mover una silla.
El Salto al "Vanilla"
Así que decidí, en un arrebato de valentía (o quizá de locura, el tiempo lo dirá), lanzar este nuevo proyecto usando solo JavaScript puro, HTML y CSS. Nada de bundlers complejos al principio, nada de Virtual DOM, nada de directivas mágicas. Al principio, la idea me ilusionaba. Pensaba: "¡Va a ser pan comido, si yo sé cómo funciona esto!".
La realidad, como suele pasar, fue un poquito diferente. El primer desafío fue la gestión del estado. Con Angular o Vue, tienes soluciones integradas o librerías muy maduras que te resuelven la vida. De repente, tener que pensar en cómo pasar datos entre diferentes partes de la aplicación, cómo actualizar la interfaz cuando algo cambia, se convirtió en un rompecabezas interesante. Al principio, recurrí a algo tan básico como pasar elementos por parámetros y funciones callback. Funcionaba, sí, pero enseguida me di cuenta de la escalabilidad. Para una aplicación pequeña, perfecto. Pero imagina esto creciendo... uff.
Los Enredos Inesperados y la Magia del DOM
Luego vino la manipulación del DOM. Recuerdo que solía pensar en el DOM como algo que los frameworks manejaban por mí de manera eficiente. Y lo hacen, ojo. Pero, ¿qué pasa cuando eres tú quien tiene que insertar un elemento nuevo, o actualizar un atributo, o borrar algo? Te obliga a pensar mucho más en la eficiencia. No puedes andar creando nodos como si nada, ni actualizando estilos de forma masiva sin pensar en el reflow y el repaint. Empecé a leer de nuevo sobre cómo interactuar directamente con el DOM, sobre el uso de `createElement`, `appendChild`, `textContent`...
Y ahí es donde me di cuenta de algo: ¡el poder que tiene el navegador por sí solo! Con un poco de lógica bien aplicada y entendiendo cómo funciona el DOM, puedes hacer cosas sorprendentemente fluidas. No es la abstracción a la que estaba acostumbrado, es más... crudo, más directo. Tienes que ser más consciente de lo que estás pidiendo al navegador que haga.
Redescubriendo la Base de la Web
Pero lo más interesante, y esto es lo que me ha hecho escribir este post, es lo mucho que me ha hecho redescubrir la base de la web. Entender cómo funcionan los eventos, el ciclo de vida de un elemento, cómo se comunica el JavaScript con el HTML y el CSS, todo eso se vuelve cristalino cuando no tienes un framework en medio. Es como si antes viera el bosque a través de un teleobjetivo y ahora lo viera a ras de suelo, sintiendo cada hoja, cada rama.
He tenido que recurrir a APIs nativas que casi había olvidado que existían. El `fetch` para las peticiones, `localStorage` para guardar datos simples, `addEventListener` para manejar la interactividad. Y la verdad, es reconfortante. Sientes que controlas cada byte, cada línea de código.
¿Vale la Pena Desconectar un Poco?
La pregunta del millón: ¿merece la pena este viaje fuera de los frameworks? Mi respuesta, después de estas semanas de experimentación, es un rotundo SÍ. No estoy diciendo que los frameworks sean malos, ¡para nada! Son herramientas fantásticas para proyectos grandes y complejos, donde la productividad, la mantenibilidad y la escalabilidad son clave. Son la solución estándar y, en la mayoría de los casos, la más acertada.
Pero desconectar de vez en cuando, meter las manos en la masa del "vanilla", te da una perspectiva que no se consigue de otra manera. Te recuerda que detrás de todas esas capas de abstracción, hay un navegador haciendo su trabajo. Te enseña a ser más eficiente, a pensar de forma más fundamental. Te da un aprecio renovado por la simplicidad y por el poder intrínseco de las tecnologías web originales.
Además, he descubierto que para proyectos pequeños, prototipos rápidos o sitios con una interactividad muy específica, ir "vanilla" puede ser incluso más rápido y ligero. Menos dependencias, tiempos de carga menores, código más legible para quien no conoce el framework específico. Es una cuestión de elegir la herramienta adecuada para el trabajo adecuado.
Lecciones Aprendidas en el Camino
Si estás pensando en hacer algo parecido, o simplemente tienes curiosidad, aquí van algunas de mis conclusiones:
- El Estado es tu Amigo (y tu Enemigo): Piensa muy bien cómo vas a gestionar el estado de tu aplicación. Para proyectos medianos, quizás alguna librería de gestión de estado ligera como `useState` de Preact si quieres algo parecido a React, o implementar tus propios patrones de pub/sub puede ser una buena opción.
- La Eficiencia del DOM es Clave: No manipules el DOM a lo loco. Sé consciente de las actualizaciones. Evita re-renderizados innecesarios. Aprende a usar las APIs del DOM de forma inteligente.
- Conoce tus Herramientas Nativas: El `fetch` es potente, `addEventListener` es tu mejor amigo, y `querySelector` y `querySelectorAll` te harán la vida mucho más fácil. No subestimes el poder del JavaScript nativo.
- El CSS Sigue Siendo Rey: Igual que con el JS, tener un buen entendimiento de CSS puro te da un control increíble. A veces, la solución más simple es una clase bien aplicada o una propiedad CSS.
- La Simplicidad es Poder: A veces, lo más sencillo es lo más elegante y mantenible. No siempre necesitas la última tecnología para resolver un problema.
Reflexiones Finales y Próximos Pasos
Este viaje me ha refrescado la memoria y me ha dado nuevas ideas. No creo que abandone los frameworks por completo, mi trabajo a menudo lo requiere y me encantan sus ventajas. Pero sí que aprecio mucho más lo que hay debajo. Me siento un desarrollador más completo, con una comprensión más profunda de cómo funciona la web.
Así que, si llevas tiempo en esto y sientes esa chispa de curiosidad, te animo a que te retes a ti mismo. Coge un proyecto pequeño, o una funcionalidad específica, y prueba a hacerlo sin frameworks. Te sorprenderá lo mucho que puedes aprender y redescubrir. Al final del día, la web es un conjunto maravilloso de tecnologías, y entenderlas en su esencia es un regalo para cualquier desarrollador.
¡Espero que esta anécdota les haya resultado interesante! Ya saben, siempre se aprende algo nuevo, incluso cuando uno cree que ya lo sabe todo. ¡Nos leemos en el próximo post!