超棒go静态资源打包,让你的项目干净简单

1,404 阅读1分钟

1 散落各地的资源

下图是golang web项目基本的目录结构,在部署过程中都会面临一个问题:html、js、css、img这些静态资源如何快速打包,能否和springboot项目一样打包成单体结构呢?答案能!

image.png

Golang从1.6开始加入了 go:embed 指令,它能快速的完成静态资源和golang代码一起打包,先看看go.dev说明:

2 go:embed

image.png

3 初始化引入embed

package assets

import "embed"

var (
   //go:embed static
   StaticFs embed.FS

   //go:embed html
   HtmlFs embed.FS
)

4 初始化Handler

func HandlerHtml(c *gin.Context) {
   staticServer := http.FileServer(http.FS(assets.HtmlFs))
   c.Request.URL = &url.URL{Path: "html" + c.Request.RequestURI}
   staticServer.ServeHTTP(c.Writer, c.Request)
}

5 堆外直接映射静态资源

image.png

image.png

6 资源参照

6.1 以上目录相对结构在项目中大家可以了解一下:gitee.com/youzi222/si…

6.2 想了解更多embed用法:pkg.go.dev/embed