#web-framework #web-apps #server-side-rendering #web #ssr #front-end #framework

pagetop

一个有观点的Web框架,用于构建模块化的服务器端渲染Web解决方案

29个版本

0.0.55 2024年7月28日
0.0.53 2024年3月28日
0.0.48 2023年11月19日
0.0.44 2023年7月31日
0.0.32 2022年11月12日

#916 in Web编程

Download history 182/week @ 2024-04-26 54/week @ 2024-05-03 39/week @ 2024-05-10 48/week @ 2024-05-17 40/week @ 2024-05-24 27/week @ 2024-05-31 26/week @ 2024-06-07 37/week @ 2024-06-14 37/week @ 2024-06-21 16/week @ 2024-06-28 8/week @ 2024-07-05 27/week @ 2024-07-12 28/week @ 2024-07-19 149/week @ 2024-07-26 41/week @ 2024-08-02 19/week @ 2024-08-09

240 每月下载量
12 crates 中使用

MIT/Apache

785KB
8K SLoC

包含 (WOFF字体,180KB) static/base/fonts/icons.woff,(WOFF字体,130KB) static/base/fonts/icons.woff2

PageTop

一个有观点的Web框架,用于构建模块化的 服务器端渲染 Web解决方案。

License API Docs Crates.io Downloads

概述

PageTop核心API提供了一套全面的工具集,通过动作、组件、包和主题来扩展其功能,以满足特定需求和应用场景。

  • 动作通过截取执行流程来定制PageTop的内部行为。
  • 组件将HTML、CSS和JavaScript封装成功能性强、可配置和定义明确的单元。
  • 通过与PageTop API或第三方包API交互来扩展或自定义现有功能。
  • 主题允许开发者在不影响功能的情况下改变页面和组件的外观。

⚡️ 快速开始

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
}

此程序包含一个HelloWorld包,提供了一种服务,可以在默认设置下通过https://127.0.0.1:8088访问问候网页。

📂 辅助工具

  • pagetop-macros:一组过程宏,可以增强PageTop中的开发体验。

  • pagetop-build:简化了将资源直接嵌入二进制文件的过程,适用于PageTop应用程序。

🚧 警告

PageTop框架目前处于积极开发中。API不稳定,频繁更改。不建议在生产环境中使用,直到版本0.1.0

📜 许可证

PageTop是免费、开源和许可宽松的!除非另有说明(以下和/或在单独的文件中),本项目中的所有代码都采用以下两种许可方式之一

任您选择。这意味着您可以选择您偏好的许可协议!这种双重许可方法在Rust生态系统中被视为事实标准。

✨ 贡献

除非您明确说明,否则您根据Apache-2.0许可协议有意提交给作品的所有贡献,都将如上所述双重许可,不附加任何额外条款或条件。

依赖项

~25–38MB
~654K SLoC