1 个不稳定版本

0.1.0 2024 年 5 月 29 日

#4 in #inertia

MIT 许可证

15KB
281

Actix-Inertia

License

Actix-Inertia 是一个 Rust 库,它将 Inertia.js 与 Actix 网络框架集成。它允许您使用服务器端路由和控制器构建现代的单页应用程序 (SPA)。

目录

介绍

Inertia.js 允许您在没有客户端路由器复杂性的情况下构建现代的 SPA。Actix-Inertia 提供了与 Actix 的无缝集成,允许您使用 Rust 使用 Inertia.js。

安装

将以下内容添加到您的 Cargo.toml

[dependencies]
actix-inertia = "0.1.0"
actix-web = "4"
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"

用法

设置服务器

创建一个包含以下内容的 main.rs 文件

use actix_inertia::{ResponseFactory, VersionMiddleware, example_handler};
use actix_web::{web, App, HttpServer};

#[actix_web::main]
async fn main() -> std::io::Result<()> {
    let response_factory = ResponseFactory::new();

    HttpServer::new(move || {
        App::new()
            .app_data(web::Data::new(response_factory.clone()))
            .wrap(VersionMiddleware::new("1.0".to_string()))
            .route("/example", web::get().to(example_handler))
    })
    .bind("127.0.0.1:8080")?
    .run()
    .await
}

中间件

要使用版本中间件,如上所示将其包含在您的 Actix 应用程序设置中。这确保了请求根据 Inertia.js 版本机制得到适当的处理。

示例

使用 Inertia 的示例处理器

use actix_inertia::{InertiaResponder, VersionMiddleware};
use actix_web::{web, App, HttpRequest, HttpServer, Responder};
use serde::Serialize;

#[derive(Serialize)]
struct ExampleProps {
    key: String,
}

async fn example_handler(req: HttpRequest) -> impl Responder {
    let props = ExampleProps {
        key: "value".to_string(),
    };
    InertiaResponder::new("ExampleComponent", props).respond_to(&req)
}

#[actix_web::main]
async fn main() -> std::io::Result<()> {
    HttpServer::new(|| {
        App::new()
            .wrap(VersionMiddleware::new("1.0".to_string()))
            .route("/example", web::get().to(example_handler))
    })
    .bind("127.0.0.1:8080")?
    .run()
    .await
}

贡献

欢迎贡献!请参阅贡献指南以获取更多详细信息。

许可证

此项目采用 MIT 许可证。有关详细信息,请参阅LICENSE 文件。

依赖项

~14–25MB
~451K SLoC