Introducción
Si quieres aprender a crear soluciones web que rescaten la esencia de los orígenes usando HTML, CSS y JavaScript para crear páginas web ofrecidas desde un servidor, pero con la potencia de un lenguaje de programación rápido y seguro como Rust, entonces... ¡has llegado a buen puerto!
¿Qué es PageTop?
PageTop es un marco de desarrollo web que proporciona herramientas y patrones de diseño predefinidos para el desarrollo de soluciones web seguras, modulares y personalizables con Renderizado desde el Servidor (SSR).
PageTop está desarrollado en el lenguaje de programación Rust y se apoya sobre los hombros de auténticos gigantes, usando algunas de las librerías (crates) más estables y reconocidas del ecosistema Rust como:
- Actix Web para la gestión de los servicios y del servidor web.
- Tracing para el sistema de diagnóstico y mensajes de registro estructurados.
- Fluent templates que incorpora Fluent para internacionalizar los proyectos.
- SeaORM que usa SQLx para modelar el acceso a bases de datos.
- Además de integrar versiones ad hoc de config-rs y Maud en su código.
- Y otras que puedes consultar en el archivo
Cargo.toml
de PageTop.
La API de PageTop permite adaptar y extender sus funcionalidades a los diferentes escenarios de una solución web usando Acciones, Componentes, Paquetes y Temas:
- Las Acciones funcionan como un mecanismo para personalizar el comportamiento interno de PageTop interceptando su flujo de ejecución.
- Los Componentes permiten encapsular HTML, CSS y JavaScript en unidades funcionales, configurables y bien definidas.
- Los Paquetes amplían o personalizan funcionalidades interactuando con las APIs de PageTop o las APIs de paquetes de terceros.
- Y los Temas son paquetes que van a permitir a los desarrolladores cambiar la apariencia de páginas y componentes sin afectar su funcionalidad.
SSR
El Renderizado desde el Servidor (SSR) es una técnica de desarrollo web en la que el contenido HTML se genera en el servidor antes de enviarlo al navegador del usuario, donde CSS y JavaScript añaden la interactividad necesaria. PageTop encapsula todos estos elementos en componentes unitarios que pueden mantenerse de forma independiente y ser extendidos o modificados por otras librerías.
Esto contrasta con la Renderización desde el Cliente (CSR), donde es el navegador el que genera el contenido HTML tras recibir el código WebAssembly o JavaScript necesario desde el servidor.
PageTop usa SSR como una solución robusta para la creación de soluciones web complejas. Pero también presenta desafíos, como ciclos de desarrollo más lentos por la necesidad de recompilar cada cambio en el código Rust. No obstante, ofrece excelentes tiempos de carga iniciales, mejora en el SEO, y unifica el desarrollo en cliente y servidor bajo un mismo lenguaje.
Contribuciones
PageTop empezó como un proyecto personal para aprender a programar con Rust. Es libre y de código abierto, para siempre. Y puedes contribuir aumentando su versatilidad, documentando, traduciendo o corrigiendo errores. Pero también puedes crear tus propios paquetes o temas que otros desarrolladores podrán utilizar en sus proyectos.
Advertencia
PageTop está aún en las primeras etapas de desarrollo. Faltan características importantes y otras no funcionan como deberían. Y la documentación es escasa. Sólo se liberan versiones de desarrollo con cambios importantes en la API que desaconseja su uso en producción. Úsalo si estás interesado en conocerlo o quieres contribuir.
Si necesitas un entorno fullstack estable y robusto para tu próximo proyecto, puedes mirar Perseus basado en la excelente librería Sycamore, también te entusiasmará Rocket, sin descartar MoonZoon o Percy. Y puedes crear tu propio framework combinando soluciones como Yew, Leptos o Dioxus con el servidor Axum y el ORM Diesel para construir increíbles aplicaciones SSR.
Si aún sigues por aquí, ¡ha llegado el momento de empezar a aprender algo de PageTop!
La guía de Inicio Rápido te enseñará a probar los ejemplos y ejecutar Drust. También te ayudará con la configuración de tu entorno de desarrollo y te orientará con los próximos pasos a seguir.