『Go』静态文件嵌入

若未设置 live 参数,则直接调用嵌入的文件;

若设置了 live,调用外部文件,这样只修改这些静态文件不需要重新编译。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
var (
	//go:embed static
	Static embed.FS
)

func GetFileSystem() http.FileSystem {
	if len(os.Args) > 1 && os.Args[1] == "live" {
		log.Println("using live mode")
		return http.FS(os.DirFS("static"))
	}

	log.Println("using embed mode")

	fsys, err := fs.Sub(Static, "static")
	if err != nil {
		panic(err)
	}
	return http.FS(fsys)
}
Licensed under CC BY-NC-SA 4.0