1 个不稳定版本
0.1.0 | 2024 年 5 月 29 日 |
---|
#4 in #inertia
15KB
281 行
Actix-Inertia
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