资源管理设计的目标之一是在开发阶段不影响静态文件的开发管理,只有在发布的时候执行打包即可,打包完毕后清理临时文件,因此只会影响生成的二进制可执行文件,对开发者来说无感知且使用便捷。

准备工程

建议大家使用 GoFrame 官方提供的工程化目录结构,并且使用 CLI 工具来创建自己的项目工程,因为整个框架工程化思想以及一些示例都是基于标准化的工程目录结构,这样更有利于大家学习和使用整个开发框架,提高开发效率。特别是,在工程目录中存在一个 packed 目录,用以存放资源管理组件的相关打包内容,在默认情况下,里面是一个空的 go 文件,什么都不会做。

资源管理-最佳实践 - 图1

开发阶段

在开发阶段,一般来说,开发者并不需要关心资源管理的事情,该怎么撸码就怎么撸,静态的文件按照建议放到 resource 目录下。在开发阶段的静态文件访问都会直接通过文件系统访问。

准备发布

当开发完毕后,想要将静态文件、模板文件、配置文件打包到二进制可执行文件中,随着二进制可执行文件发布。好的,这个时候资源组件开始介入展示能力了。您需要配置到交叉编译的配置,具体请参考命令行相关章节 交叉编译-build 。我们需要使用到CLI工具来执行可执行文件编译,将您的编译配置通过配置文件管理起来(放到hack/config.yaml文件中),一个参考的编译配置如下:

  1. gfcli:
  2. build:
  3. name: "my-app"
  4. arch: "amd64"
  5. system: "linux"
  6. mod: "none"
  7. cgo: 0
  8. packSrc: "manifest/config,manifest/i18n,resource/public,resource/template"
  9. version: ""
  10. output: "./bin"
  11. extra: ""

请注意其中的 pack 配置,表示我们在执行编译的时候自动打包到二进制可执行文件中的目录。随后,我们在项目根目录下执行编译命令:

  1. gf build

该命令在编译时会自动将配置文件中指定的目录进行打包成临时的打包 go 文件,再执行编译,编译完毕后自动清理临时的打包 go 文件。

资源管理-最佳实践 - 图2提示

大部分场景下,配置文件可能不需要打包进二进制可执行文件,具体根据您的业务场景自行选择。

发布运行

将二进制执行发布执行即可。