我们来看一个使用示例,在该示例中,展示了资源管理在 WebServer 的静态服务、配置管理、模板引擎中的使用。

资源文件

资源文件源码: https://github.com/gogf/gf/tree/master/os/gres/testdata/example/files

资源文件打包: https://github.com/gogf/gf/tree/master/os/gres/testdata/example/boot

资源文件列表:

  1. 2020-03-28T13:04:10+00:00 0.00B config
  2. 2020-03-28T13:03:06+00:00 135.00B config/config.toml
  3. 2020-03-28T13:04:10+00:00 0.00B public
  4. 2020-03-28T12:57:54+00:00 6.00B public/index.html
  5. 2020-03-28T13:04:10+00:00 0.00B template
  6. 2020-03-28T13:03:17+00:00 15.00B template/index.tpl
  7. TOTAL FILES: 6

三个文件的内容分别为:

  1. config.toml
  1. [server]
  2. Address = ":8888"
  3. ServerRoot = "public"
  4. [viewer]
  5. DefaultFile = "index.tpl"
  6. Delimiters = ["${", "}"]

该文件为应用的配置文件。

  1. index.html
  1. Hello!

该文件用于静态资源请求。

  1. index.tpl
  1. Hello ${.name}!

该文件用于模板文件解析展示。

创建应用

  1. package main
  2. import (
  3. _ "github.com/gogf/gf/v2/os/gres/testdata/example/boot"
  4. "github.com/gogf/gf/v2/frame/g"
  5. "github.com/gogf/gf/v2/net/ghttp"
  6. )
  7. func main() {
  8. s := g.Server()
  9. s.Group("/", func(group *ghttp.RouterGroup) {
  10. group.GET("/template", func(r *ghttp.Request) {
  11. r.Response.WriteTplDefault(g.Map{
  12. "name": "GoFrame",
  13. })
  14. })
  15. })
  16. s.Run()
  17. }

可以看到,整个代码中除了 import 中额外增加了一个 _ "github.com/gogf/gf/v2/os/gres/testdata/example/boot" 的包引入外,没有其他任何设置。这也是 GoFrame 框架的资源管理比较便捷的地方,资源管理并不需要开发阶段对代码做任何特殊设置,在应用程序部署之前打包好资源文件,并通过 import 增加资源文件的引入即可。

运行后,终端输出:

  1. 2020-03-28 21:36:19.828 75892: http server started listening on [:8888]
  2. SERVER | DOMAIN | ADDRESS | METHOD | ROUTE | HANDLER | MIDDLEWARE
  3. |---------|---------|---------|--------|-----------|-------------------|------------|
  4. default | default | :8888 | GET | /template | main.main.func1.1 |
  5. |---------|---------|---------|--------|-----------|-------------------|------------|

可以看到,配置文件被自动读取并应用到了 WebServer 上。

我们通过 curl 命令测试一下静态文件以及模板引擎的访问。

  1. $ curl http://127.0.0.1:8888/
  2. Hello!
  3. $ curl http://127.0.0.1:8888/template
  4. Hello GoFrame!

可以看到, index.html 静态文件以及 index.tpl 模板文件都被成功访问到了。