33 releases
new 0.0.60 | Jan 6, 2025 |
---|---|
0.0.59 | Dec 22, 2024 |
0.0.55 | Jul 28, 2024 |
0.0.53 | Mar 28, 2024 |
0.0.32 | Nov 12, 2022 |
#225 in Web programming
1,206 downloads per month
Used in 13 crates
225KB
5K
SLoC
PageTop
reivindica la esencia de la web clásica usando Rust para
la creación de soluciones web SSR (renderizadas en el servidor) basadas en HTML, CSS y JavaScript.
Ofrece un conjunto de herramientas que los desarrolladores pueden implementar, extender o adaptar
según las necesidades de cada proyecto, incluyendo:
- Acciones (actions): alteran la lógica interna de una funcionalidad interceptando su flujo de ejecución.
- Componentes (components): encapsulan HTML, CSS y JavaScript en unidades funcionales, configurables y reutilizables.
- Paquetes (packages): añaden, extienden o personalizan funcionalidades usando las APIs de
PageTop
o de terceros. - Temas (themes): permiten modificar la apariencia de páginas y componentes sin comprometer su funcionalidad.
⚡️ Guía rápida
La aplicación más sencilla de PageTop
se ve así:
use pagetop::prelude::*;
#[pagetop::main]
async fn main() -> std::io::Result<()> {
Application::new().run()?.await
}
Por defecto, este código sirve una página web de bienvenida accesible desde un navegador en la
dirección http://localhost:8088
, siguiendo la configuración predeterminada.
Para personalizar el servicio, puedes crear un paquete de PageTop
de la siguiente manera:
use pagetop::prelude::*;
struct HelloWorld;
impl PackageTrait for HelloWorld {
fn configure_service(&self, scfg: &mut service::web::ServiceConfig) {
scfg.route("/", service::web::get().to(hello_world));
}
}
async fn hello_world(request: HttpRequest) -> ResultPage<Markup, ErrorPage> {
Page::new(request)
.with_component(Html::with(html! { h1 { "Hello world!" } }))
.render()
}
#[pagetop::main]
async fn main() -> std::io::Result<()> {
Application::prepare(&HelloWorld).run()?.await
}
Este programa implementa un paquete llamado HelloWorld
que sirve una página web en la ruta raíz
(/
) mostrando el texto "Hello world!" dentro de un elemento HTML <h1>
.
📂 Repositorio
El código se organiza en un workspace con los siguientes subproyectos:
- pagetop, es la librería principal. Reúne algunos de los crates más estables y populares del ecosistema Rust para proporcionar APIs y recursos para la creación avanzada de soluciones web.
Auxiliares
-
pagetop-build, permite incluir fácilmente archivos estáticos o archivos SCSS compilados directamente en el binario de las aplicaciones
PageTop
. -
pagetop-macros, proporciona una colección de macros que mejoran la experiencia de desarrollo con
PageTop
.
Paquetes
-
pagetop-seaorm, integra SeaORM para trabajar con bases de datos en aplicaciones
PageTop
. -
pagetop-mdbook, incluye contenido generado por mdBook en aplicaciones desarrolladas con
PageTop
. -
pagetop-hljs, utiliza HighlightJS para mostrar fragmentos de código con resaltado de sintaxis con
PageTop
.
Temas
- pagetop-bootsier,
tema para
PageTop
que usa Bootstrap para dar vida a tus diseños web.
Aplicaciones
-
drust, es una aplicación que utiliza
PageTop
para crear un Sistema de Gestión de Contenidos (CMS) que permita construir sitios web dinámicos, administrados y configurables. -
website, es la aplicación web creada con el propio entorno
PageTop
para descubrir a la comunidad su ecosistema en pagetop.cillero.es.
🚧 Advertencia
PageTop
es un proyecto personal que hago por diversión para aprender cosas nuevas. Su API es
inestable y está sujeta a cambios frecuentes. No recomiendo su uso en producción, al menos mientras
no se libere una versión 1.0.0.
📜 Licencia
El código está disponible bajo una doble licencia:
-
Licencia MIT (LICENSE-MIT o también https://opensource.org/licenses/MIT)
-
Licencia Apache, Versión 2.0 (LICENSE-APACHE o también https://www.apache.org/licenses/LICENSE-2.0)
Puedes elegir la licencia que prefieras. Este enfoque de doble licencia es el estándar de facto en el ecosistema Rust.
✨ Contribuciones
Cualquier contribución para añadir al proyecto se considerará automáticamente bajo la doble licencia indicada arriba (MIT o Apache v2.0), sin términos o condiciones adicionales, tal y como permite la licencia Apache v2.0.
Dependencies
~28–41MB
~724K SLoC