1 个不稳定版本
0.1.0 | 2021 年 2 月 1 日 |
---|
#1872 在 编码
3KB
goods
易于使用的多环境资产管理器。
易于使用的多环境资产管理器。
目标
这个 crate 的编写考虑以下目标
-
提供所有功能。
扩展 crate 提供各种有用的数据源,如FileSource
和ReqwestSource
。基于 Serde 的Format
由goods-json
、goods-yaml
和goods-ron
提供。 -
可扩展性。
可以为任何资产类型实现多个Format
特性,包括外部资产类型。
例如JsonFormat
、YamlFormat
和RonFormat
为任何资产类型实现了Format
特性,其中间表示形式实现了serde::de::DeserializeOwned
。 -
支持 WebAssembly。
这个 crate 和一些扩展 crate 与 WASM 兼容,并且不需要线程即可加载资产。带有Local
前缀的类型和特性满足远程Send
和Sync
的要求。它们可以在单线程环境中使用。专为 WASM 添加,其中常见的类型是!Send
和!Sync
。 -
处理异步数据源。
原始数据源实现Source
特性。Source::read
方法返回一个将通过对资产进行轮询来完成的 future。 -
快速编译。
核心 crate (goods
) 在执行cargo clean
后构建,耗时约 1 秒。
非目标
本软件包并不旨在支持所有可能的功能。以下是部分功能的列表
- 热重载
目前没有计划支持热重载。
功能
除了核心特性和类型之外,所有开箱即用的功能都位于自己的 goods-*
软件包中。
资源
goods-dataurl
- 提供了DataUrlSource
- 从直接嵌入到 URL 的数据中读取。goods-fs
- 提供了FileSource
- 从文件系统中加载资产字节数据。goods-reqwest
- 提供了ReqwestSource
- 使用reqwest
从 URL 加载资产字节数据。在这种情况下应使用tokio
运行时来轮询 future。goods-fetch
- 提供了FetchSource
- 使用浏览器的 Fetch API 加载资产数据。
格式
goods-json
- 提供了JsonFormat
- 将原始字节视为 JSON 文档,并通过 serde 反序列化资产表示。goods-yaml
- 提供了YamlFormat
- 将原始字节视为 YAML 文档,并通过 serde 反序列化资产表示。goods-ron
- 提供了RonFormat
- 将原始字节视为 RON 文档,并通过 serde 反序列化资产表示。
示例
提供了一些简单的示例,以学习如何使用此软件包。
文件系统示例
展示了如何使用 DataUrlSource
构建注册表并从中加载简单的资产。
文件系统示例
展示了如何使用 FileSource
构建注册表并从中加载简单的资产。
reqwest 示例
异步示例,使用 tokio
和 reqwest
软件包通过 HTTP 协议加载资产。
fetch 示例
展示了如何使用 Fetch API 在浏览器中加载资产。
此示例可以使用 build-wasm32.sh 或 build-wasm32.bat 在 examples 目录中构建。
wasm-bindgen
(兼容版本)必须在 PATH
cd examples
build-wasm32 fetch
python3 server.py
然后在您最喜欢的浏览器中打开 https://127.0.0.1:8000/fetch.html。加载的资产必须在页面上显示。否则请查看日志中的错误。
许可
本存储库根据您的选择采用以下任一许可
- Apache 许可证 2.0 版本,(LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT 许可证(LICENSE-MIT 或 http://opensource.org/licenses/MIT)
。
贡献许可
除非您明确声明,否则根据Apache-2.0许可证定义,您有意提交以包含在作品中的任何贡献,都将按照上述方式双重授权,不附加任何额外条款或条件。
依赖项
~1.6–2.2MB
~39K SLoC