Desgraciadamente, tengo que admitir que he caido en la trampa de VueJS, el framework progresivo de Javascript, que es tendencia desde hace meses y al cual ahora le voy a dedicar unas cuantas entradas.
Si eres lector del blog, podrás comprobar que no he profundizado en frameworks de Javascript como React o AngularJS, por varios motivos, que ahora detallo y que antes no había sido capaz de mencionar. Hoy sí!
Qué es VueJS
Es un framework para trabajar con Javascript, aunque también permite trabajar con otros lenguajes web como TypeScript o CoffeScript, es libre, open source, hecho en la comunidad para la comunidad y que está en pleno auge. El motivo, te pongo varios:
1.- Si te manejas bien con HTML, CSS y Javascript, la curva de aprendizaje es rápida (o rapidísima, más bien), y eso es de agradecer. Personalmente, hay una librería que me ha facilitado mucho aprender Javascript, y no es otra que la omnipresente jQuery.
2.- Renderizado rápido basado en componentes: si las cosas, además de hacerlas bien, las haces rápido …. normal que se adopten rápido. Aunque React fue pionera, VueJS también hace el uso del concepto de DOM virtual, que es parte de la rapidez que incluye VueJS.
3.- Incluye Data-binding: si has trabajado con React o AngularJS, sabrás que el data-binding es casi obligado, y VueJS también lo incorpora, lo que es todo ventajas para el desarrollador.
4.- Extensa documentación y sobre todo, multitud de ejemplo: tienes que explicar muy bien cómo usar tu producto, y una excelente documentación ayuda, y si encima es un producto “sencillo” de incorporar, aún más.
5.- ¿Progresivo? El atributo de progresivo hace referencia a que la base (vue.js) es muy ligero, solo 20 kb minimizado, pero en función de tus necesidades puedes incorporar nuevas funcionalidades con el uso de plugins o extensiones. De esta forma, aprenderás Vue ajustando sólo a tus necesidades, sin tener que aprender cosas que no necesitarás, o lo incorporarás progresivamente según vaya haciendo falta. O dicho de otra forma: existe una base para trabajar, que es extensible en función de las necesidades a satisfacer.
Este punto 5 es genial, porque ¿que hago yo metiendo routing si no lo necesito? ¿Y no es grandioso trabajar con componentes, aislados, que permitan la reutilización de código?
Con estos antecedentes, normal que VueJS triunfe.
El 6º motivo
Yo le añadiría un 6º motivo: no hay ruptura de compatibilidad de una versión a la siguiente.
Aunque en el blog he hablado de varios frameworks de Javascript como React o AngularJS, porque están impulsados por los gigantes de Internet, el punto 6º ha sido muy importante para no aprender ninguno de esos frameworks.
No hay nada más frustrante en Javascript, que cambiar de versión de framework y que no funcione nada!
Cómo sabía de qué iba la cosa, pues React cambia tanto entre versiones, y AngularJS tienen el mismo defecto, no me hacen atractivo aprender una cosa para que en pocos meses, nada me sirva, todo falle y vuelta a empezar.
Por contra, hay que reconocer que se han propcupado por crear herramientas que faciliten la vida a los desarrolladores, y en el caso de React, incluso con una solapa exclusiva para depuración. No puedo comentar mucho de AngularJS, porque no he pasado de ejemplos muy básicos donde lo fundamental era el data-binding.
Todo mezclado, pero ordenado
Otro punto desfavorable hacia React sobre todo, es el hecho de la vuelta al código espagueti: HTML, CSS, y Javascript mezclado, pero ahora más que nunca, y encima con incompatibilidades en algunas palabras, transformar los JSX “en otra cosa”, … Sinceramente, todo lo que gana en rapidez lo pierde en curva de aprendizaje, conceptos demasiado profundos, …
VueJS, en mi opinion, ha cuidado mucho ese detalle, porque es posible que en un componente tengas todo, pero ordenado.
Otro detalle importante, en mi opinion, es el tema de que permita el uso de plantillas, evitando cargadores (loaders). Hasta ahora, es lo que había estado usando, con buen resultado gracias a HandlebarsJS.
En definitiva, yo me he convencido de que VueJS sí merece la pena aprenderlo.
Y a tí, ¿te he convencido? Bueno, falta un pequeño ejemplo que te dejo en otra entrada, donde empezamos a trabajar con VueJS.