1 个不稳定版本
0.1.0 | 2021年2月1日 |
---|
#12 在 #asset-manager
6KB
92 行代码(不含注释)
goods
适用于多种环境的易于使用资产管理系统。
适用于多种环境的易于使用资产管理系统。
目标
本库编写时考虑了以下目标
-
包含电池。
扩展库提供各种有用的数据源,如FileSource
和ReqwestSource
。基于 Serde 的Format
由goods-json
、goods-yaml
和goods-ron
提供。 -
可扩展性。
可以为任何资产类型实现多个Format
特性,包括外部的资产类型。
例如,JsonFormat
、YamlFormat
和RonFormat
为任何中间表示形式实现了serde::de::DeserializeOwned
的Format
特性。 -
支持 WebAssembly。
此库和某些扩展库是 WASM 兼容的,并且不需要线程即可加载资产。前缀为Local
的类型和特性满足Send
和Sync
的要求。它们可以用于单线程环境。特别添加以支持 WASM,其中常见的类型是!Send
和!Sync
。 -
处理异步数据源。
原始数据源实现Source
特性。Source::read
方法返回一个未来,它将通过轮询资产句柄来驱动完成。 -
快速编译。
核心库 (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反序列化资产表示
示例
提供了一些简单的示例,以学习如何使用这个crate。
fs 示例
展示了如何使用 DataUrlSource
构建注册表并从其中加载简单的资产。
fs 示例
展示了如何使用 FileSource
构建注册表并从其中加载简单的资产。
reqwest 示例
异步示例,使用 tokio
和 reqwest
crate通过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 License,版本2.0,(LICENSE-APACHE或https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可证(LICENSE-MIT或http://opensource.org/licenses/MIT)
任选其一。
贡献许可
除非您明确声明,否则根据Apache-2.0许可证定义,您有意提交的任何贡献,均应按照上述方式双重许可,不附加任何额外条款或条件。
依赖关系
~12MB
~228K SLoC