584 - Mi experiencia con Svelte y Rust
En este episodio te cuento mi experiencia en el #frontend con #svelte y #typescript mientras que en el #backend estoy utilizando #actix con #rust
Sigo metido con el servicio para escuchar vídeos en formato podcast, y si bien, ya lo tenía resuelto, no me terminaba de convencer. Como te conté en un episodio anterior, lo estaba implementado con una combinación de Jinja, Rust y vanilla JavaScript, sin embargo, quedaban muchas aspectos en el aire. Cualquier modificación, me implicaba tocar demasiados palos y la probabilidad de error, era mayúscula, así que decidí dar una vuelta al proyecto, y realizar una migración a algo mas sólido, como pueda ser un framework para el frontend. Así, en este episodio te quiero hablar de mi experiencia con Svelte y Rust.
Mi experiencia con Svelte y Rust
Un paseo por el pasado
Estoy haciendo varios proyectos en los que interviene un backend y un frontend. Hasta el momento siempre le había dado la mayor importancia al backend, porque es la parte con la que mas disfrutaba. En este sentido, el frontend siempre quedaba un poco descafeinado, como con desgana. A esto además hay que sumar mi, mas que cuestionable gusto estético.
Sin embargo, conforme estas aplicaciones han ido creciendo, también crecía el desarrollo del frontend, y me encontraba con ciertas inconsistencias que era necesario mantener bajo control, y en este momento, me decidí a adoptar un framework para el front. Así, ahora mismo, estoy utilizando un framework para el frontent que es Svelte y otro, para el backend que es Actix.
Ahora mismo, estoy implementando un servicio para escuchar podcast, como te conté en un episodio reciente del podcast, y por otro lado estoy trabajando en DockerBoard. Y como de costumbre vengo diciendo, se trata de aprovechar las sinergías. Lo que aprendo haciendo uno lo aplico en el otro y al revés.
Svelte
Si no conoces Svelte, indicarte que se trata de un framework, que puedes utilizar tanto con JavaScript como con TypeScript, que se utiliza para construir interfaces de usuario, interactivas en la web. A diferencia de otros frameworks, como React, Angular o Vue, Svelte realiza la mayor parte del trabajo de compilación durante la fase de desarrollo en lugar de hacerlo en el navegador del usuario final. Esto significa que Svelte produce un código más eficiente y optimizado para el rendimiento.
No te puedo hablar de otros framework, en cuanto al desempeño se refiere, pero lo cierto es que el resultado con Svelte es tremendamente rápido, y el diseño es sencillo e intuitivo.
Una de las características más destacadas de Svelte es su enfoque en la reactividad. Permite que las partes relevantes de una interfaz de usuario reaccionen automáticamente a los cambios en los datos sin necesidad de escribir código adicional para gestionar esos cambios. Esto hace que el desarrollo de aplicaciones sea más sencillo y rápido en comparación con otros marcos de trabajo.
Además, Svelte ofrece una sintaxis simple y elegante, lo que facilita su aprendizaje y uso. Se está volviendo cada vez más popular entre los desarrolladores web debido a su rendimiento, eficiencia y facilidad de uso.
Actix
Por otro lado ctix es un framework de desarrollo web para el lenguaje de programación Rust. Está diseñado para ser rápido, escalable y seguro, aprovechando las características de concurrencia y paralelismo de Rust. Actix proporciona un modelo de actores para la gestión eficiente de la concurrencia, lo que lo hace ideal para aplicaciones web que necesitan manejar múltiples solicitudes simultáneas de manera eficiente. Algunas características de Actix son las siguientes,
- Concurrencia basada en actores: Actix utiliza el modelo de actores para manejar la concurrencia, lo que permite la ejecución de múltiples tareas de forma independiente y eficiente.
- Rendimiento: Actix está diseñado para ser rápido y escalable, aprovechando al máximo las características de rendimiento de Rust.
- Sistema de enrutamiento: Proporciona un sistema de enrutamiento flexible y fácil de usar para manejar las solicitudes HTTP y dirigirlas a los controladores adecuados.
- Soporte para WebSockets y WebSocket Secure (WSS): Actix ofrece soporte integrado para protocolos de comunicación en tiempo real como WebSockets, lo que facilita la construcción de aplicaciones web interactivas y en tiempo real.
- Seguridad: Al estar escrito en Rust, Actix aprovecha las características de seguridad del lenguaje para prevenir problemas comunes de seguridad como desbordamientos de búfer y condiciones de carrera.
Gestor de paquetes. pnpm
Durante estos días he estado utilizando pnpm
como gestor de paquetes, algo que me ha resultado tremendamente curioso. Pnpm es un administrador de paquetes para proyectos de Node.js. Al igual que npm (Node Package Manager) y Yarn, pnpm se utiliza para instalar y administrar dependencias de JavaScript en aplicaciones Node.js.
La principal diferencia entre pnpm y otros administradores de paquetes como npm y Yarn es la forma en que maneja las dependencias. Mientras que npm y Yarn instalan cada paquete individualmente en el directorio node_modules de cada proyecto, lo que puede llevar a la duplicación de módulos y ocupar mucho espacio en disco, pnpm utiliza un mecanismo de almacenamiento global compartido y enlaza simbólicamente los módulos necesarios en cada proyecto. Algunas características interesantes de pnpm
son las siguiente,
- Espacio en disco reducido: Gracias al enlace simbólico y al almacenamiento compartido de dependencias, pnpm puede ahorrar mucho espacio en disco en comparación con otros administradores de paquetes.
- Instalaciones más rápidas: Al reutilizar dependencias instaladas previamente y evitar la descarga y almacenamiento duplicado de paquetes, pnpm puede ofrecer tiempos de instalación más rápidos en proyectos grandes.
- Gestión eficiente de la memoria: pnpm utiliza una cantidad constante de memoria independientemente del tamaño del proyecto, lo que lo hace adecuado para proyectos de cualquier escala.
- Soporte para lockfiles de npm y Yarn: pnpm puede utilizar lockfiles generados por npm o Yarn, lo que facilita la migración de proyectos existentes a pnpm.
Conclusiones
Como ves, ando la mar de entretenido, y lo cierto es que me gustaría sacar ambos servicios durante la próxima semana, pero se que no va a ser posible. Lo cierto es que se me come el tiempo, pero poco a poco va saliendo.
Tengo que confesarte que ambos servicios están quedando espectacularmente, y creo que van a representar un antes y un después, por lo menos desde mi perspectiva de ver el frontend y el backend.