29 releases
0.0.55 | Jul 28, 2024 |
---|---|
0.0.53 | Mar 28, 2024 |
0.0.48 | Nov 19, 2023 |
0.0.44 | Jul 31, 2023 |
0.0.32 | Nov 12, 2022 |
#1259 in Web programming
61 downloads per month
Used in 12 crates
785KB
8K
SLoC
Contains (WOFF font, 180KB) static/base/fonts/icons.woff, (WOFF font, 130KB) static/base/fonts/icons.woff2
Overview
The PageTop core API provides a comprehensive toolkit for extending its functionalities to specific requirements and application scenarios through actions, components, packages, and themes:
- Actions serve as a mechanism to customize PageTop's internal behavior by intercepting its execution flow.
- Components encapsulate HTML, CSS, and JavaScript into functional, configurable, and well-defined units.
- Packages extend or customize existing functionality by interacting with PageTop APIs or third-party package APIs.
- Themes enable developers to alter the appearance of pages and components without affecting their functionality.
⚡️ Quick start
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
}
This program features a HelloWorld
package, providing a service that serves a greeting web page
accessible via http://localhost:8088
under default settings.
📂 Helpers
-
pagetop-macros: A collection of procedural macros that enhance the development experience within PageTop.
-
pagetop-build: Simplifies the process of embedding resources directly into binary files for PageTop applications.
🚧 Warning
PageTop framework is currently in active development. The API is unstable and subject to frequent changes. Production use is not recommended until version 0.1.0.
📜 License
PageTop is free, open source and permissively licensed! Except where noted (below and/or in individual files), all code in this project is dual-licensed under either:
-
MIT License (LICENSE-MIT or https://opensource.org/licenses/MIT)
-
Apache License, Version 2.0, (LICENSE-APACHE or https://www.apache.org/licenses/LICENSE-2.0)
at your option. This means you can select the license you prefer! This dual-licensing approach is the de-facto standard in the Rust ecosystem.
✨ Contributions
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
Dependencies
~25–39MB
~630K SLoC