go 打包静态文件(css js images ...)到.go文件中

引入statik的包

  • go get -d github.com/rakyll/statik
  • go install github.com/rakyll/statik

main.go 头加上

//go:generate statik -src=./static
//go:generate go fmt statik/statik.go
package main

编译

  • 在终端执行go generate
  • 会在 statik 目录下生成statik.go

使用方法

chi 中示例
# 1.引入依赖
"github.com/rakyll/statik/fs"
_ "你的项目名称/statik" // 引入打包后的静态文件 statik.go

# 2. 使用示例 
r := chi.NewRouter() 
r.Get("/static/*", func(w http.ResponseWriter, r *http.Request) {
	fs := http.StripPrefix("/static/", http.FileServer(statikFS))
	fs.ServeHTTP(w, r)
})
gin中示例
# 在gin的router系统中  /static/* 不支持 只能为/static/*xxx xxx可以不接收处理


# 1.引入依赖
"github.com/rakyll/statik/fs"
_ "你的项目名称/statik" // 引入打包后的静态文件 statik.go

# 2. 使用示例 
# 示例1 (html放到.go文件中编译)
# ps INDEXHTML是 vue打包好的index.html 内容 里面的js路径可以根据需要修改 /static/xxx.js

statikFS,_ := fs.New()
r := gin.Default()
r.StaticFS("/static", statikFS)
r.GET("", func(c *gin.Context) {
	t := template.Must(template.New("index").Parse(INDEXHTML))
	t.ExecuteTemplate(c.Writer, "index", "")
})

####  示例2 (html单独处理)
r.GET("/favicon.ico",func (c *gin.Context){
		read, err := http.FileSystem.Open("/favicon.ico")
		if err != nil {}
		defer read.Close()
		io.Copy(c.Writer, read)
})
r.GET("/","index.html"同上)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值