Ya no habra nada mejor que React, VUE o Angular?

Ya ni he escrito nada de React, me ha gustado bastante los hooks y muchos desarrolladores Web piensan que efectivamente React es la cima del desarrollo web, que para mejorar habría incluso que optimizar los navegadores en si mismo, sin embargo, no dejemos de pensar y preguntarnos Virtual DOM es lo mejor, realmente el DOM es tan lento como nos lo venden, a final de cuentas React, VUE y Angular corren sobre el navegador.

Hooks mejora la forma en que distribuimos estado y nos mantiene seguros de la POO, pero le carga bastante fuerte la mano al Garbage Collector, crear y recrear funciones no es de a gratis. Yo en lo personal he estado buscando librerias que no sean tan "gordas" como React, VUE o Angular un hello world en react pesa 70Kb.

Lo primero que encontré fue ELM es otro lenguaje no es JS pero compila a JS y de su página podemos ver las mediciones que ellos hacen comparando el tamaño de la apliación contra los otros Frameworks. Tiene su propio modelo de manejo de estado similar a Redux y Reactive Extensions. Pero tiene una desventaja importante y es que no es JS y pasa lo mismo que cuando quieres introducir otro lenguage a una plataforma existente, pocos lo aceptan o no lo usan porque no les termina de gustar (dicese java-clojure, java-kotlin, java-otros).

Luego me puse a ver lo de los webcomponents que es la solución a muchos problemas del Web (imports, overrides, global scopes, etc, etc). Pero todavía esta en definiciones por parte del W3C y no todos los navegadores lo soportan, pero el problema de React, VUE y Angular persiste, y para mi fortuna no soy el único que busca más alla, por fortuna hay gente mucho más capaz que uno y no solo busca soluciones sino que las crea. Buscando en varios blogs, fui a dar con Svelte https://svelte.dev y me agrada, esta en su versiòn 3 osea que tampoco es un novato en el web.

Lo que mas me impacto es que no tiene virtual DOM, pero es reactivo y fue cuando empece a interesarme mas en ello y es cuando lees o te dicen que svelte es compilado, no es un runtime como lo es React, Vue o Angular, luego lees que Angular de hecho esta buscando hacer lo mismo, compilar Angular en lugar de entregar Angular, esa simple perspectiva te hace darte cuenta de que es algo diferente y que vale la pena revisarlo, me paso lo mismo con Rust, es un lenguaje que rivaliza con C en velocidad, que no tiene Garbage collector por lo que deja de calle a Java y amigos https://benchmarksgame-team.pages.debian.net/benchmarksgame/fastest/rust-java.html, ni se diga javascript y con webassembly se puede usar en browsers y nodejs.

Ciertamente Rust no es tan facil como java, en Java ya esta hecho todo para web (servidores, parsers, clientes de bd, etc.) en Rust no pero las ventajas son varias, al igual Svelte no tiene las mismas librerias que ya hay en React o Angular, pero su adopción será más rápida que por ejemplo ELM ya que Svelte si es javascript, html y css con algunas cosas raras que necesita por ser compilado más no interpretado.

<script>
        let name = 'world';
</script>

<h1>Hello {name}!</h1>

Y este hello world en svelte al final pesará alrededor de 5KB que es muchísimo mejor que los 70KB de React o los 100KB de Angular y VUE.

Bueno sin lugar a dudas voy a migrame a eso y trataremos de escribir al respecto.

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de gorlok

Todo depende

Para hacer un "hello world" web, sobran las tecnologías vanilla de la web: basta con html, y si quiere, JavaScript y CSS. Y nada más.

Pero una aplicación del mundo real, tiene más requerimientos. Muchísimos más. Y ahí está la cuestión. Depende de las necesidades, del mantenimiento que habrá que darle, de la complejidad, de la cantidad de gente que esté trabajando ella, y muchas cosas. Los frameworks como Angular, React y Vue, ya no son meras librerías para complementar el desarrollo de aplicaciones web. Son frameworks que imponen una forma de trabajo, generalmente basada en componentes, con una cantidad de soluciones ya probadas, y que evitan reinventar la rueda con cada nuevo proyecto.

¿Es necesario Angular/React/Vue en todos los proyectos? ¡Para nada! Depende del caso.

En la mayoría de los proyectos web "típicos", me encuentro haciendo un frontend en Angular y una API backend en DotNetCore o Java o Go. En otros, usé web components. O incluso Java con JSF si los requerimientos web eran simples y quería algo muy rápido. Y hoy por hoy, prácticamente cada componente se despliega como un contenedor en Docker.

Pero depende de las necesidades. También colaboro en proyectos donde aún usan Java deployando en Tomcat, con un framework MVC, JSF, o alguna alternativa típica. Y a veces con Android, comunicándose con APIs en Java o DotNet Core.

Lo "mejor", depende de las circunstancias y el momento. Muy probablemente en dos años estemos usando otras tecnologías... y es normal, porque será otro contexto y debería haber nuevas necesidades y opciones a las actuales.

En cualquier caso, veo a Java muy bien posicionado en el backend, avanzando rápidamente con Jakarta EE y Microprofile en la Eclipse Foundation, más las rápidas mejoras que se vienen haciendo tanto al lenguaje como a las APIs, y que eran muy necesarias y bienvenidas.

También es muy importante lo que sucede con Quarkus y GraalVM, posicionando a Java como una gran alternativa para el despliegue en nube. Incluso para ir a nuevas plataformas: iOS y web nativo. El futuro, como siempre, nos sorprenderá.

Totalmente de acuerdo

Sin embargo, el post no es referente a que tecnologia/framework seleccionar para cada proyecto, sino que, aun cuando necesitas algo mediano cuantos recursos realmente necesitas, el ejemplo es React por usar React ya necesitas transmitir 70Kb solo por el simple hecho de usarlo en tu App, y la comporativa es Svelte que lo que necesita de recursos son 5Kb para funcionar, sin perder Reactividad y diseno por componentes.

Para ahondar en esto, Svelte es un compilador mas que un runtime, y pertenece mas a los llamados "disapearing" frameworks. Angular esta estudiando esto de los compiladores con Angular Ivy https://angular.io/guide/ivy.

Imagen de Nopalin

Cuando hay un compilador

Cuando hay un compilador siempre hay un interprete. Hacia donde va la web? los navegadores tal parece que ya no son simples visualizadores de información si no que son toda una máquina virtual, y si ya son lo mismo que java y .net, las aplicaciones que se programen para ellos no serían aplicaciones de escritorio básicamente?