把静态文件嵌入到go程序包
statik 允许您将静态文件目录嵌入 Go 二进制文件中,以便以后从 http.FileSystem
提供服务。
这是一个疯狂的主意吗? 不,不一定。 如果要构建具有Web组件的工具,则通常需要提供一些图像,CSS和JavaScript。 您喜欢分发单个二进制文件的便利,因此您不希望将它们部署到其他地方。 如果您的静态文件不是很大,并且会被一些人浏览,则 statik
是您正在寻找的解决方案。
上面是机翻。简单说是把静态文件打包,方便程序内部调用,又不暴露在外面。是在 Google 上班的小姐姐开发的。
使用方法:
//go:generate statik -src=./public -include=*.jpg,*.txt,*.html,*.css,*.js
package main
import (
"log"
"net/http"
_ "github.com/rakyll/statik/example/statik"
"github.com/rakyll/statik/fs"
)
// Before buildling, run go generate.
// Then, run the main program and visit http://localhost:8080/public/hello.txt
func main() {
statikFS, err := fs.New()
if err != nil {
log.Fatal(err)
}
http.Handle("/public/", http.StripPrefix("/public/", http.FileServer(statikFS)))
http.ListenAndServe(":8080", nil)
}
0
See Also
Nearby
- 上一篇 › 预览各类默认在 macOS 上不被支持的文件格式
- 下一篇 › 如果你是一名程序员,又想做市场营销,可以参考
我用 go generate ,与 github.com/mjibson/esc 结合,直接把 所有的静态资源全都集成进去了~
好处是:部署只需要一个 exe,双击执行,linux 下也只需要 ./xxx 即可
坏处是:改一个字节的前端,需要重新来过~
@冒烟的蘑菇 #1 为了好处,这弊端也忍忍
@youbbs #2 其实我刚开始接触 youbbs 代码,我就想这么改... ... 以为你不喜欢才没碰这里~