3个版本
0.1.2 | 2024年5月5日 |
---|---|
0.1.1 | 2024年5月3日 |
0.1.0 | 2024年5月3日 |
641 在 HTTP服务器
每月下载 92 次
5KB
Ruxt
Ruxt是一个基于Actix-web的Rust Web框架。它被编写来使Rust中的纯HTML Web应用程序编写更加容易,特别是利用了HTMX库!
该项目还处于早期阶段,不建议用于生产环境。
安装
运行以下命令将Ruxt添加到您的项目中
cargo add ruxt
或者将以下内容添加到您的 Cargo.toml
文件中
[dependencies]
ruxt = "0.1.2"
入门指南
CLI工具
要创建一个新的Ruxt项目,使用以下命令安装 create-ruxt-app
CLI工具
cargo install create-ruxt-app
然后,使用以下命令创建一个新的项目
cargo create-ruxt-app {project_name}
这将创建一个具有以下结构的新项目
my_project
├── Cargo.toml
├── src
│ ├── main.rs
│ └── pages
│ ├── index.rs
│ └── mod.rs
要运行您的项目,导航到项目的根目录并运行以下命令
cargo run
基本路由
Ruxt main
宏将自动为 routes
目录中的文件生成路由。路由根据文件名生成,因此名为 index.rs
的文件将在服务器根目录下可用。
宏根据函数名确定要使用哪个HTTP动词。例如,名为 get
的函数将是一个 GET
路由。
例如
// routes/index.rs
use actix_web::{web, HttpResponse, Responder};
pub async fn get() -> impl Responder {
HttpResponse::Ok().body("Hello, World!")
}
将在 https://127.0.0.1:8080/
上作为GET请求可用。
以下动词可用于路由
get
post
put
patch
delete
动态路径
可以通过将文件夹或文件命名为两个前导下划线来创建动态路由。例如,名为 __user
的文件夹将在 /user/{id}
上创建一个动态路由。
// routes/__user.rs
use actix_web::{web, HttpResponse, Responder};
pub async fn post(id: web::Path<String>) -> impl Responder {
HttpResponse::Ok().body(format!("Hello, {}!", id))
}
将在 https://127.0.0.1:8080/user/{id}
上作为POST请求可用。
当前限制
- 由于宏生成路由的方式,目前无法具有名为
mod
或index
的路由名称。我正在寻找解决方案。
当前功能
- 基于文件的简单路由
- 动态路由
计划中的功能
- 类似JSX的模板
- 中间件
- 静态文件服务
- 类似Next.js的布局系统
- 404处理
- Tailwind工具集成
- 用于创建新项目的CLI工具
- 更好的错误消息
更多即将到来!
如有任何功能请求或建议,请随时提交问题。
工作原理
Ruxt 使用基于文件的路由系统。
这是通过一个自定义的 proc-macro 实现的,该宏读取 pages
目录的内容,并生成一个新的 main
函数,该函数创建一个新的 Actix-web 服务器,并为 pages
目录中的每个文件生成路由。
许可证
本项目采用 MIT 许可证。
依赖项
~16–28MB
~499K SLoC