1个不稳定版本
| 0.1.0 | 2021年2月1日 |
|---|
#6 在 #asset-manager
4KB
70 行
goods
适用于多种环境的易于使用的资源管理器。
适用于多种环境的易于使用的资源管理器。
目标
本库编写时考虑以下目标
-
内置功能。
扩展库提供多种有用的数据源,如FileSource和ReqwestSource。由goods-json、goods-yaml和goods-ron提供的基于Serde的Format。 -
可扩展性。
可以为任何资产类型(包括外部资产类型)实现多个Format特质。
例如,JsonFormat、YamlFormat和RonFormat为任何实现了serde::de::DeserializeOwned中间表示的资产类型实现了Format特质。 -
支持WebAssembly。
本库和一些扩展库与WASM兼容,并且不需要线程来加载资产。带有Local前缀的类型和特质满足Send和Sync要求。它们可以在单线程环境中使用。专门为WASM添加,其中!Send和!Sync类型很常见。 -
与异步数据源一起工作。
原始数据源实现了Source特性。Source::read方法返回一个future,它将通过轮询处理资源来驱动完成。 -
快速编译。
核心crate(goods)在执行cargo clean后大约需要1秒。
非目标
此crate并不旨在支持所有可能的功能。以下是一些这些功能的列表
- 热重载
目前没有计划支持热重载。
功能
所有开箱即用的功能(除核心特性和类型外)都存在于它们自己的 goods-* crate中。
来源
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反序列化资产表示。
示例
提供了一些简单的示例,以学习如何使用此crate。
fs 示例
展示了如何使用 DataUrlSource 构建注册表并从中加载简单的资产。
fs 示例
展示了如何使用 FileSource 构建注册表并从中加载简单的资产。
reqwest 示例
异步示例,使用HTTP协议和 tokio 以及 reqwest crate加载资产。
fetch 示例
展示了如何使用Fetch API在浏览器中加载资产。
此示例可以使用build-wasm32.sh或build-wasm32.bat在examples目录下构建。
wasm-bindgen(兼容版本)必须位于PATH
cd examples
build-wasm32 fetch
python3 server.py
然后,在您喜欢的浏览器中打开https://:8000/fetch.html。页面必须显示加载的资源。否则,查看日志中的错误。
许可证
此存储库的许可证可以是以下之一
- Apache License,版本2.0,(LICENSE-APACHE或https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可证(LICENSE-MIT或https://open-source.org.cn/licenses/MIT)
任选其一。
贡献许可证
除非您明确声明,否则根据Apache-2.0许可证定义,您有意提交给工作内容并由您定义的贡献,将按上述方式双重许可,不附加任何额外条款或条件。
依赖项
~4–18MB
~234K SLoC