4 个版本 (2 个重大变更)
0.7.0 | 2024年2月6日 |
---|---|
0.5.5 | 2023年3月28日 |
0.3.1 | 2022年6月21日 |
0.3.0 | 2022年6月16日 |
在 HTTP 服务器 中排名第 497
67KB
1K SLoC
spa-rs
spa-rs 是一个库,可以将所有 SPA Web 应用程序文件(dist 静态文件)嵌入,并发布为单个二进制可执行文件。
它基于 [axum] 和 [rust_embed]
它重新导出所有 axum 模块以方便使用。
示例
use spa_rs::spa_server_root;
use spa_rs::SpaServer;
use spa_rs::routing::{get, Router};
use anyhow::Result;
spa_server_root!("web/dist"); // specific your SPA dist file location
#[tokio::main]
async fn main() -> Result<()> {
let data = String::new(); // server context can be acccess by [axum::Extension]
let mut srv = SpaServer::new()?
.port(3000)
.data(data)
.static_path("/png", "web") // static file generated in runtime
.route("/api", Router::new()
.route("/get", get(|| async { "get works" })
)
);
srv.run(spa_server_root!()).await?;
Ok(())
}
会话
有关详细信息,请参阅 [session] 模块。
开发
在编写 SPA 应用程序时,您可能希望使用 SPA 框架提供的热重载功能。例如 [vite dev
] 或 [ng serve
].
您可以使用 spa-rs 将所有静态请求反向代理到 SPA 框架。 (需要启用 reverse-proxy
功能)
示例
let forward_addr = "https://127.0.0.1:1234";
srv.reverse_proxy(forward_addr.parse()?);
许可证:MIT
依赖项
~16–29MB
~504K SLoC