1 个不稳定版本
0.1.0 | 2021年2月1日 |
---|
#2123 在 编码
3KB
goods
适用于多种环境的易于使用的资产管理器。
适用于多种环境的易于使用的资产管理器。
目标
此crate编写时考虑以下目标
-
包含电池。
扩展crate提供了各种有用的数据源,如FileSource
和ReqwestSource
。由goods-json
、goods-yaml
和goods-ron
提供的基于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,该future将通过轮询句柄来驱动资产完成。 -
快速编译。
核心crate (goods
) 在执行cargo clean
后构建,耗时约1秒。
非目标
此crate并不旨在支持所有可能的功能。以下是一些功能的列表
- 热重载
目前没有计划支持热重载。
功能
所有除核心特性和类型之外的功能都存在于各自的 goods-*
crate中。
来源
goods-dataurl
- 提供DataUrlSource
- 从直接嵌入到url中的数据读取。goods-fs
- 提供FileSource
- 从文件系统中加载资源字节数据。goods-reqwest
- 提供ReqwestSource
- 使用reqwest
从URL加载资源字节数据。在这种情况下应使用tokio
运行时来轮询futures。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许可证版本2.0,(LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
任您选择。
贡献许可
除非您明确声明,否则您提交的任何有意包括在作品中的贡献,如Apache-2.0许可证中定义,将按照上述方式双重许可,不附加任何额外条款或条件。
依赖关系
~2.5MB
~46K SLoC