Crate pagetop

Source
Expand description

PageTop

Un entorno de desarrollo para crear 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): 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 una extensión de PageTop de la siguiente manera:

use pagetop::prelude::*;

struct HelloWorld;

impl ExtensionTrait 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 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
Acciones, componentes, extensiones y temas base de PageTop.
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 (chrono).
global
Opciones de configuración globales.
html
HTML en código.
locale
Localización (L10n).
prelude
Prelude de PageTop.
response
Respuestas a las peticiones web en sus diferentes variantes.
service
Gestión del servidor y servicios web (actix-web).
trace
Gestión de trazas y registro de eventos de la aplicación.
util
Funciones y macros útiles.

Macros§

actions
hm
Macro para construir una colección de pares clave-valor.
html
include_config
include_files
include_files_service
include_locales
Define un conjunto de elementos de localización y textos de traducción local.
join_string
Concatena varios fragmentos de cadenas (string slices) en una cadena String.
option_string
Concatena varios fragmentos de cadenas (string slices) en una cadena String utilizando opcionalmente un separador.
strict_string
Concatena varios fragmentos de cadenas (string slices) en una cadena String únicamente si ninguna es vacía.
trio_string
Concatena dos fragmentos de cadenas (string slices) en una cadena String con un separador.

Type Aliases§

StaticResources
UniqueId
Un UniqueId representa un identificador único global para un tipo.
Weight

Attribute Macros§

fn_builder
Macro (attribute) que asocia un método builder with_ con un método alter_ equivalente que modifica la instancia actual usando una única implementación.
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