Skip to main content

Crate pagetop

Crate pagetop 

Source
Expand description

PageTop

Un entorno para el desarrollo de soluciones web modulares, extensibles y configurables.

Doc API Crates.io Descargas Licencia


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§

StaticResource
Static files resource.
StaticResources
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>.
UniqueId
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étodo alter_.
main
Define una función main asíncrona como punto de entrada de PageTop.
test
Define funciones de prueba asíncronas para usar con PageTop.

Derive Macros§

AutoDefault
Deriva [Default] con atributos personalizados (basada en SmartDefault).
Getters
Derive accessor or “getter” methods for each field on the struct.