#tide #web #macro #serve-static #static-file #web-apps #file-serving

tide-serve-dir-macro

用于在 tide 中提供静态文件目录的宏

4 个版本

0.2.0 2024 年 6 月 4 日
0.1.2 2022 年 9 月 16 日
0.1.1 2022 年 9 月 16 日
0.1.0 2022 年 8 月 19 日

#263 in GUI

Download history 3393/week @ 2024-05-04 3845/week @ 2024-05-11 3973/week @ 2024-05-18 3680/week @ 2024-05-25 4372/week @ 2024-06-01 3717/week @ 2024-06-08 3458/week @ 2024-06-15 3847/week @ 2024-06-22 3057/week @ 2024-06-29 3428/week @ 2024-07-06 3495/week @ 2024-07-13 4360/week @ 2024-07-20 4760/week @ 2024-07-27 4788/week @ 2024-08-03 5317/week @ 2024-08-10 3489/week @ 2024-08-17

19,082 每月下载次数

MIT/Apache

12KB
164 代码行

潮汐提供目录宏

这个crate提供了一些宏,用于在tide中提供静态文件目录,而无需使用serve_dir函数。相反,它在编译时遍历静态目录,并为找到的所有文件生成直接的serve_file路由,或者使用include_str直接在应用程序二进制中嵌入文件。

这种方法旨在比仅仅提供整个目录更安全,因为所有将要提供的服务文件在编译时都是已知的。当将文件嵌入到应用程序二进制中时,也可以显著提高性能。

用法

首先将 tide-serve-dir-macro 添加到依赖项中

[dependencies]
tide-serve-dir-macro = "0.2"

有三个用于提供目录的宏可用

serve_dir!

为给定目录中找到的所有文件生成serve_file端点。编译时未提供的文件不会提供服务。如果在运行时文件丢失,由于serve_file函数未包装,应用程序将崩溃。其优点是文件可以在运行时进行修改。此外,它仅在访问给定路由时才加载文件。

let app = tide::new();
serve_dir!(app, "/path-prefix", "path/to/directory");

include_dir!

生成直接在二进制中包含文件内容的端点。这不需要在运行时提供静态文件,并且在访问端点时可以显著提高响应时间,但也会导致应用程序二进制大小增加、内存使用量增加,因此不适合大文件。此外,当静态文件更改时,整个应用程序需要重新编译。由于不推荐使用此宏提供大文件,您可以为文件提供第四个可选参数,该参数设置文件应直接包含在二进制中的最大字节大小。如果文件较大,将使用serve_file提供服务;

let app = tide::new();
include_dir!(app, "/path-prefix", "path/to/directory");
// Only embed files smaller than 4KiB
include_dir!(app, "/path-prefix", "path/to/directory", 4096);

auto_serve_dir!

根据构建配置文件在serve_dir!include_dir!之间进行切换的辅助宏。由于调试构建应尽可能快地构建,并且您可能希望在开发期间运行时更改静态文件,因此它根据构建配置文件切换,并且在发布构建期间仅使用include_dir

let app = tide::new();
auto_serve_dir!(app, "/path-prefix", "path/to/directory");
// Uses the same parameter set as include_dir!, although the maximum file size is ignored in the debug build
auto_serve_dir!(app, "/path-prefix", "path/to/directory", 4096);

依赖关系

~1.3–8.5MB
估算约 ~75K SLoC