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 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_
files Deprecated - Obsoleto desde la versión 0.3.0: usar
static_files_service!en su lugar. - include_
files_ service Deprecated - 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
Stringusando 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§
- Static
Resource - Static files resource.
- Static
Resources - Contenedor para un conjunto de recursos embebidos.
Type Aliases§
- 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).