Paquetes
Una de las características más poderosas de PageTop es su extensibilidad mediante el uso de Paquetes. Los paquetes amplían o personalizan funcionalidades de PageTop o de otros paquetes.
Un paquete es una estructura unitaria (unit struct) que implementa el trait PackageTrait
. Los métodos de PackageTrait
tiene un funcionamiento predefinido que se puede personalizar.
Los paquetes tienen acceso a puntos en tu aplicación donde PageTop permite que el código de terceros haga ciertas cosas.
¡Hola mundo!
Para añadir lógica a nuestra aplicación puedes crear un paquete en tu archivo main.rs
sustituyendo el código de ejemplo por este nuevo código:
use pagetop::prelude::*; struct HelloWorld; impl PackageTrait 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 }
La función main()
instancia la aplicación usando el método prepare()
con una referencia (PackageRef
) al paquete HelloWorld
. Así se indica a PageTop que debe incluirlo en su registro interno de paquetes.
HelloWorld
configura un servicio en la ruta raíz ("/") que se implementa en hello_world()
. Esta función devuelve una página web con un componente que renderiza directamente código HTML para mostrar un título con el texto Hello World!.
Ahora si en el navegador volvemos a cargar la dirección http://localhost:8088
veremos el saludo esperado.
Librerías
Los paquetes en PageTop son crates de biblioteca, usualmente publicados en crates.io, que puedes usar como dependencias en tu aplicación.
Seguridad
Los paquetes ajenos a PageTop contienen código desarrollado por terceros y, dado que pueden hacer básicamente lo que quieran, pueden representar un serio riesgo para la seguridad de tu sistema. Por ejemplo, un paquete podría indicar que está analizando la entrada del usuario y realmente está descargando ransomware en tu computadora.
Cualquier sospecha sobre paquetes malintencionados debe ser reportado confidencialmente al administrador de PageTop para ser analizado por la comunidad.