4个版本 (2个重大更改)
0.3.0 | 2024年5月15日 |
---|---|
0.2.1 | 2023年4月17日 |
0.2.0 | 2021年1月27日 |
0.1.0 | 2021年1月22日 |
#48 in 缓存
63KB
1K SLoC
包含 (WOFF字体, 1KB) examples/assets/fonts/latin-i700.woff2, (WOFF字体, 1KB) examples/assets/fonts/latin-400.woff2, (WOFF字体, 1KB) examples/assets/fonts/latin-700.woff2, (WOFF字体, 1KB) examples/assets/fonts/latin-i400.woff2
reinda
: 轻松嵌入和管理资产
这个库可以帮助您的Web应用程序管理您的资产(外部文件)。资产可以被压缩并嵌入到二进制文件中,以获得易于部署的独立可执行文件。在调试模式下,资产会动态加载,以避免需要重新编译后端。可以在资产文件名中自动包含哈希,以实现在Web上的良好缓存。在发布模式下,这个crate会预先准备一切,以便通过HTTP提供文件可以尽可能快。
你可能知道crate rust-embed
: reinda
基本上做了同样的事情,但大部分功能更丰富,更灵活(据我所知)。
小型示例:
use reinda::{Assets, Embeds, embed};
// Embed some assets
const EMBEDS: Embeds = embed! {
base_path: "../assets",
files: ["index.html", "bundle.*.js"],
};
// Configure assets
let mut builder = Assets::build();
builder.add_embedded("index.html", &EMBEDS["index.html"]);
builder.add_embedded("static/", &EMBEDS["bundle.*.js"]);
let assets = builder.build().await?;
// Retrieve asset for serving. The `.await?` is only there for the "dev" mode
// when the file is dynamically loaded. In release mode, the final `Bytes`
// are already stored inside `assets`.
let bytes = assets.get("index.html").unwrap().content().await?;
有关更多信息,请参阅文档。
此项目状态
虽然这个crate还没有被许多项目使用,但我们已经在生产环境中使用了它几年了。如果您对这个项目有任何想法,请通过这个社区反馈问题告诉我!
许可证
根据您的选择,许可协议为Apache License, Version 2.0或MIT许可证。除非您明确说明,否则您有意提交给本项目并由您定义的Apache-2.0许可证所包含的任何贡献,都将按照上述条款双许可,而无需任何额外条款或条件。
依赖关系
~3.5–7MB
~156K SLoC