1 散落各地的资源
下图是golang web项目基本的目录结构,在部署过程中都会面临一个问题:html、js、css、img这些静态资源如何快速打包,能否和springboot项目一样打包成单体结构呢?答案能!
Golang从1.6开始加入了 go:embed 指令,它能快速的完成静态资源和golang代码一起打包,先看看go.dev说明:
2 go:embed
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 堆外直接映射静态资源
6 资源参照
6.1 以上目录相对结构在项目中大家可以了解一下:gitee.com/youzi222/si…
6.2 想了解更多embed用法:pkg.go.dev/embed