#web-apps #assets #embed #web #standalone #http

reinda

轻松嵌入和管理您的Web应用程序的资产以构建独立的可执行文件。提供文件名哈希、模板、压缩等功能。

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 缓存

MIT/Apache

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: 轻松嵌入和管理资产

CI status of main Crates.io Version docs.rs

这个库可以帮助您的Web应用程序管理您的资产(外部文件)。资产可以被压缩并嵌入到二进制文件中,以获得易于部署的独立可执行文件。在调试模式下,资产会动态加载,以避免需要重新编译后端。可以在资产文件名中自动包含哈希,以实现在Web上的良好缓存。在发布模式下,这个crate会预先准备一切,以便通过HTTP提供文件可以尽可能快。

你可能知道crate rust-embedreinda基本上做了同样的事情,但大部分功能更丰富,更灵活(据我所知)。

小型示例:

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.0MIT许可证。除非您明确说明,否则您有意提交给本项目并由您定义的Apache-2.0许可证所包含的任何贡献,都将按照上述条款双许可,而无需任何额外条款或条件。

依赖关系

~3.5–7MB
~156K SLoC