100 lines
		
	
	
	
		
			2.9 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			100 lines
		
	
	
	
		
			2.9 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
<div align="center">
 | 
						|
 | 
						|
<h1>PageTop Aliner</h1>
 | 
						|
 | 
						|
<p>Tema para <strong>PageTop</strong> que muestra esquemáticamente la composición de las páginas HTML.</p>
 | 
						|
 | 
						|
[](#-licencia)
 | 
						|
[](https://docs.rs/pagetop-aliner)
 | 
						|
[](https://crates.io/crates/pagetop-aliner)
 | 
						|
[](https://crates.io/crates/pagetop-aliner)
 | 
						|
 | 
						|
<br>
 | 
						|
</div>
 | 
						|
 | 
						|
## Sobre PageTop
 | 
						|
 | 
						|
[PageTop](https://docs.rs/pagetop) es un entorno de desarrollo que reivindica la esencia de la web
 | 
						|
clásica para crear soluciones web SSR (*renderizadas en el servidor*) modulares, extensibles y
 | 
						|
configurables, basadas en HTML, CSS y JavaScript.
 | 
						|
 | 
						|
 | 
						|
# ⚡️ Guía rápida
 | 
						|
 | 
						|
Igual que con otras extensiones, **añade la dependencia** a tu `Cargo.toml`:
 | 
						|
 | 
						|
```toml
 | 
						|
[dependencies]
 | 
						|
pagetop-aliner = "..."
 | 
						|
```
 | 
						|
 | 
						|
**Declara la extensión** en tu aplicación (o extensión que la requiera). Recuerda que el orden en
 | 
						|
`dependencies()` determina la prioridad relativa frente a las otras extensiones:
 | 
						|
 | 
						|
```rust,no_run
 | 
						|
use pagetop::prelude::*;
 | 
						|
 | 
						|
struct MyApp;
 | 
						|
 | 
						|
impl Extension for MyApp {
 | 
						|
    fn dependencies(&self) -> Vec<ExtensionRef> {
 | 
						|
        vec![
 | 
						|
            // ...
 | 
						|
            &pagetop_aliner::Aliner,
 | 
						|
            // ...
 | 
						|
        ]
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
#[pagetop::main]
 | 
						|
async fn main() -> std::io::Result<()> {
 | 
						|
    Application::prepare(&MyApp).run()?.await
 | 
						|
}
 | 
						|
```
 | 
						|
 | 
						|
Y **selecciona el tema en la configuración** de la aplicación:
 | 
						|
 | 
						|
```toml
 | 
						|
[app]
 | 
						|
theme = "Aliner"
 | 
						|
```
 | 
						|
 | 
						|
…o **fuerza el tema por código** en una página concreta:
 | 
						|
 | 
						|
```rust,no_run
 | 
						|
use pagetop::prelude::*;
 | 
						|
 | 
						|
async fn homepage(request: HttpRequest) -> ResultPage<Markup, ErrorPage> {
 | 
						|
    Page::new(request)
 | 
						|
        .with_theme("Aliner")
 | 
						|
        .add_component(
 | 
						|
            Block::new()
 | 
						|
                .with_title(L10n::l("sample_title"))
 | 
						|
                .add_component(Html::with(|cx| html! {
 | 
						|
                    p { (L10n::l("sample_content").using(cx)) }
 | 
						|
                })),
 | 
						|
        )
 | 
						|
        .render()
 | 
						|
}
 | 
						|
```
 | 
						|
 | 
						|
 | 
						|
# 🚧 Advertencia
 | 
						|
 | 
						|
**PageTop** es un proyecto personal para aprender [Rust](https://www.rust-lang.org/es) y conocer su
 | 
						|
ecosistema. Su API está sujeta a cambios frecuentes. No se recomienda su uso en producción, al menos
 | 
						|
hasta que se libere la versión **1.0.0**.
 | 
						|
 | 
						|
 | 
						|
# 📜 Licencia
 | 
						|
 | 
						|
El código está disponible bajo una doble licencia:
 | 
						|
 | 
						|
  * **Licencia MIT**
 | 
						|
    ([LICENSE-MIT](LICENSE-MIT) o también https://opensource.org/licenses/MIT)
 | 
						|
 | 
						|
  * **Licencia Apache, Versión 2.0**
 | 
						|
    ([LICENSE-APACHE](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.
 |