3个版本

0.1.2 2024年5月5日
0.1.1 2024年5月3日
0.1.0 2024年5月3日

641HTTP服务器

Download history 367/week @ 2024-04-29 32/week @ 2024-05-06 9/week @ 2024-05-20

每月下载 92

MIT 许可证

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请求可用。

当前限制

  • 由于宏生成路由的方式,目前无法具有名为 modindex 的路由名称。我正在寻找解决方案。

当前功能

  • 基于文件的简单路由
  • 动态路由

计划中的功能

  • 类似JSX的模板
  • 中间件
  • 静态文件服务
  • 类似Next.js的布局系统
  • 404处理
  • Tailwind工具集成
  • 用于创建新项目的CLI工具
  • 更好的错误消息

更多即将到来!

如有任何功能请求或建议,请随时提交问题。

工作原理

Ruxt 使用基于文件的路由系统。

这是通过一个自定义的 proc-macro 实现的,该宏读取 pages 目录的内容,并生成一个新的 main 函数,该函数创建一个新的 Actix-web 服务器,并为 pages 目录中的每个文件生成路由。

许可证

本项目采用 MIT 许可证。

依赖项

~16–28MB
~499K SLoC