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
19,082 每月下载次数
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