基本介绍

资源管理 是指可以将任意文件/目录打包为 Golang 源码文件,并且编译到可执行文件中,随着可执行文件发布。

资源文件在程序启动时将会自解压释放到内存中,供程序只读访问,可以将它当做基于内存的文件管理器。同时, GoFrame 的资源管理特性也支持将文件/目录打包为独立的二进制资源文件使用。由于资源文件在程序运行时是基于内存的文件操作,没有磁盘 IO 的开销,因此其文件操作效率非常高。

使用方式

  1. import "github.com/gogf/gf/v2/os/gres"

接口文档

https://pkg.go.dev/github.com/gogf/gf/v2/os/gres

组件特性

gres 资源管理组件具有以下显著特点:

  1. 可将任意的文件/目录打包为 Go 文件,支持自定义加解密。
  2. 打包的 Go 文件/资源文件自动压缩,常见 css/js 等文件可达到 50~90% 的压缩率。
  3. 支持对打包为 Go 文件的资源内容,方便地导出到本地文件系统。
  4. 资源管理器内容完全基于内存,并且内容只读,无法动态修改。
  5. 资源管理器默认整合支持到了 WebServer、配置管理、模板引擎模块中。
  6. 任意文件如网站静态文件、配置文件等可编译到二进制文件中,也可编译到发布的可执行文件中。
  7. 开发者可只需编译发布一个可执行文件,除了方便了软件分发,也为保护软件知识产权内容提供了可能。

embed.FS 的比较

Golang v1.16 版本开始官方提供了静态文件嵌入的 embed.FS 特性,整体底层设计和 gres 组件类似,压缩比、执行效率也差不多,只是在使用设计和工程化管理上有比较大的差别。 GoFrame 资源管理组件的功能更加丰富,框架的核心组件已经完全对接了 gres 资源管理组件,并且在 GoFrame 提供的标准的工程化管理下能够做到对开发者无感知地使用资源管理特性,具体可以参考章节 资源管理-最佳实践

未来 GoFrame 基础框架底层不会考虑内置对 embed.FS 组件的支持, embed.FSgres 组件可以独立使用互不影响。

相关文档

📄️ 资源管理-工具打包使用GoFrame框架中的gf命令行工具进行资源打包。通过gf pack命令可以将项目的config, public, template目录打包成Go文件,生成的文件自动引入到项目中。在boot包中优先引入packed资源包,并通过gres模块操作打包的资源文件。通过gres.Dump()方法可以打印资源文件列表,方便管理与调试。

📄️ 资源管理-方法打包使用GoFrame框架进行资源管理和方法打包。通过自定义的方法实现文件和目录的打包解包操作,支持二进制和Go代码文件。同时,示例演示了如何通过自定义加解密来保护资源文件内容,提供了详细的接口文档和实现细节。

📄️ 资源管理-方法介绍在GoFrame框架中进行资源管理的方法,包括如何添加资源、加载资源文件、获取指定路径文件、检查资源是否存在、扫描目录中的文件,并提供相关示例代码以便于理解和使用。

📄️ 资源管理-使用示例一个使用GoFrame框架进行资源管理的示例,展示在WebServer的静态服务、配置管理、以及模板引擎中的应用。通过导入资源文件,无需对代码做额外设置,实现便捷的资源管理。

📄️ 资源管理-最佳实践在GoFrame框架中进行资源管理的最佳实践。通过使用GoFrame提供的工程化目录结构和CLI工具,开发者可以在不影响开发过程的前提下有效管理静态资源。在发布阶段,资源组件会打包静态文件到二进制可执行文件中,实现资源的高效发布和管理。