Expand description
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.
- Extensiones (extensions): añaden, extienden o personalizan funcionalidades usando las APIs de PageTop o de terceros.
- Temas (themes): son extensiones que permiten modificar la apariencia de páginas y componentes.
§⚡️ 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
}Este código arranca el servidor de PageTop. Con la configuración por defecto, muestra una página de
bienvenida accesible desde un navegador local en la dirección http://localhost:8080.
Para personalizar el servicio, se puede crear una extensión de PageTop de la siguiente manera:
use pagetop::prelude::*;
struct HelloWorld;
impl Extension 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_child(Html::with(|_| html! { h1 { "Hello World!" } }))
.render()
}
#[pagetop::main]
async fn main() -> std::io::Result<()> {
Application::prepare(&HelloWorld).run()?.await
}Este programa implementa una extensión llamada HelloWorld que sirve una página web en la ruta raíz
(/) mostrando el texto “Hello world!” dentro de un elemento HTML <h1>.
§🧩 Gestión de Dependencias
Los proyectos que utilizan PageTop gestionan las dependencias con cargo, como cualquier otro
proyecto en Rust.
Sin embargo, es fundamental que cada extensión declare explícitamente sus dependencias, si las tiene, para que PageTop pueda estructurar e inicializar la aplicación de forma modular.
Modules§
- app
- Prepara y ejecuta una aplicación creada con PageTop.
- base
- Reúne acciones, componentes, extensiones y temas predefinidos.
- config
- Carga las opciones de configuración de la aplicación.
- core
- Tipos y funciones esenciales para crear acciones, componentes, extensiones y temas.
- datetime
- Soporte a fechas y horas según estándar ISO 8601 (basado en chrono).
- global
- Opciones de configuración globales.
- html
- HTML en código.
- locale
- Localización (L10n).
- prelude
- Prelude de PageTop.
- resource
- Resource definition and single module based generation.
- response
- Respuestas a las peticiones web en sus diferentes formatos.
- service
- Gestión del servidor y servicios web (con Actix Web).
- trace
- Gestión de trazas y registro de eventos de la aplicación.
- util
- Macros y funciones útiles.
Macros§
- actions
- Facilita la implementación del método
actions(). - html
- Macro para escribir plantillas HTML (basada en Maud).
- include_
config - Incluye los ajustes necesarios de la configuración anticipando valores por defecto.
- include_
locales - Incluye un conjunto de recursos Fluent con textos de traducción propios.
- render_
component - Sobrescribe el renderizado de componentes en
Theme::handle_component(). - setup_
component - Muta un componente dentro de
Theme::handle_component(). - static_
files_ service - Configura un servicio web para publicar archivos estáticos.
Structs§
- Static
Resource - Static files resource.
- Static
Resources - Contenedor para un conjunto de recursos embebidos.
Constants§
- PAGETOP_
VERSION - Versión del crate
pagetop, obtenida en tiempo de compilación (CARGO_PKG_VERSION).
Type Aliases§
- CowStr
- Alias para
Cow<'static, str>. - Unique
Id - Identificador único de un tipo estático durante la ejecución de la aplicación.
- Weight
- Representa el peso lógico de una instancia en una colección ordenada por pesos.
Attribute Macros§
- builder_
fn - Macro (attribute) que asocia un método builder
with_con un métodoalter_. - main
- Define una función
mainasíncrona como punto de entrada de PageTop. - test
- Define funciones de prueba asíncronas para usar con PageTop.
Derive Macros§
- Auto
Default - Deriva [
Default] con atributos personalizados (basada en SmartDefault). - Getters
- Derive accessor or “getter” methods for each field on the struct.