Crate pagetop

Crate pagetop 

Source
Expand description

PageTop

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

Licencia Doc API Crates.io Descargas


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 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
}

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)
        .add_component(Html::with(move |_| 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.
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_boxed
Facilita la implementación del método actions().
hm
Macro para construir una colección de pares clave-valor.
html
Macro para escribir plantillas HTML (basada en Maud).
include_config
Incluye los ajustes necesarios de la configuración anticipando valores por defecto.
include_filesDeprecated
Obsoleto desde la versión 0.3.0: usar static_files_service! en su lugar.
include_files_serviceDeprecated
Obsoleto desde la versión 0.3.0: usar static_files_service! en su lugar.
include_locales
Incluye un conjunto de recursos Fluent y textos de traducción propios.
join
Concatena eficientemente varios fragmentos en un String.
join_opt
Concatena los fragmentos no vacíos en un Option<String> con un separador opcional.
join_pair
Concatena dos fragmentos en un String usando un separador.
join_strict
Concatena varios fragmentos en un Option<String> si ninguno está vacío.
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.

Type Aliases§

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).