31 releases
new 0.0.58 | Dec 7, 2024 |
---|---|
0.0.55 | Jul 28, 2024 |
0.0.53 | Mar 28, 2024 |
0.0.48 | Nov 19, 2023 |
0.0.32 | Nov 12, 2022 |
#929 in Web programming
186 downloads per month
Used in 12 crates
220KB
5K
SLoC
PageTop
reivindica la sencillez de la web clásica utilizando SSR (renderizado en el servidor),
HTML, CSS y JavaScript. Proporciona un conjunto completo de funcionalidades que pueden extenderse y
adaptarse a las necesidades de cada solución web implementando:
- Acciones (actions). Las funcionalidades que incorporen acciones en su lógica de programa estarán proporcionando a los desarrolladores herramientas para alterar su comportamiento interno interceptando su flujo de ejecución.
- Componentes (components). Para encapsular HTML, CSS y JavaScript en unidades funcionales, configurables y bien definidas.
- Diseños (layouts). Permiten a los desarrolladores modificar la apariencia de páginas y componentes sin afectar a su funcionalidad.
- Paquetes (packages). Extienden o personalizan funcionalidades existentes interactuando con
las APIs de
PageTop
o de paquetes de terceros.
⚡️ Inicio rápido
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
}
Proporciona una página de bienvenida en http://localhost:8088
según la configuración predefinida.
Para personalizar el servicio puedes crear un paquete de PageTop
:
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
}
Este programa prepara un paquete personalizado llamado HelloWorld
que sirve una página web en la
ruta raíz (/
) mostrando el mensaje "Hello world!" en un elemento HTML <h1>
.
📂 Estructura del código
El repositorio se organiza en un workspace con los siguientes subproyectos:
- pagetop, es la librería principal. Reúne algunos de los crates más estables y populares del ecosistema Rust para proporcionar APIs, patrones de desarrollo y buenas prácticas para la creación avanzada de soluciones web SSR (Server-Side Rendering).
Auxiliares
-
pagetop-build, permite incluir fácilmente archivos estáticos o archivos SCSS compilados directamente en el binario de las aplicaciones
PageTop
. -
pagetop-macros, proporciona una colección de macros que mejoran la experiencia de desarrollo con
PageTop
.
Paquetes
- pagetop-seaorm,
integra SeaORM para trabajar con bases de datos en aplicaciones
PageTop
.
Aplicación
- drust, es una aplicación que
utiliza
PageTop
para crear un Sistema de Gestión de Contenidos (CMS) que permita construir sitios web dinámicos, administrados y configurables.
🚧 Advertencia
PageTop
es un proyecto personal que hago por diversión para aprender cosas nuevas. Su API es
inestable y está sujeta a cambios frecuentes. No recomiendo su uso en producción, al menos mientras
no se libere una versión 1.0.0.
📜 Licencia
El código está disponible bajo una doble licencia:
-
Licencia MIT (LICENSE-MIT o también https://opensource.org/licenses/MIT)
-
Licencia Apache, Versión 2.0 (LICENSE-APACHE o también https://www.apache.org/licenses/LICENSE-2.0)
Puedes elegir la licencia que prefieras. Este enfoque de doble licencia es el estándar de facto en el ecosistema Rust.
✨ Contribuciones
Cualquier contribución para añadir al proyecto se considerará automáticamente bajo la doble licencia indicada arriba (MIT o Apache v2.0), sin términos o condiciones adicionales, tal y como permite la licencia Apache v2.0.
Dependencies
~27–41MB
~718K SLoC