Gin 使用示例
(六):使用 HTML 模板构建二进制文件
这里我们使用 jessevdk/go-assets 将小的资源文件从磁盘加载到内存,这对包含前端资源的应用做单个二进制文件部署非常有用。
准备工作:go get github.com/jessevdk/go-assets-builder
为什么出错呢?
先设置国内代理地址
set GOPROXY=https://goproxy.cn
set GO111MODULE=on
防止
go frame总是无法安装
templates 目录下创建 html 子目录存放模板文件,在 html 下创建 index.tmpl:
这个index.Tmpl文件内容:
然后需要生成 assets.go:
做法:go-assets-builder templates/html -o assets.go
编写 Web 服务器处理代码如下(src/gin-demo/examples/template.go):
意思是在examples里面创建一个template
输入
package main
import (
"github.com/gin-gonic/gin"
"html/template"
"io/ioutil"
"net/http"
"strings"
)
// loadTemplate loads templates embedded by go-assets-builder
func loadTemplate() (*template.Template, error) {
t := template.New("")
for name, file := range Assets.Files {
if file.IsDir() || !strings.HasSuffix(name, ".tmpl") {
continue
}
h, err := ioutil.ReadAll(file)
if err != nil {
return nil, err
}
t, err = t.New(name).Parse(string(h))
if err != nil {
return nil, err
}
}
return t, nil
}
func main() {
r := gin.New()
t, err := loadTemplate()
if err != nil {
panic(err)
}
r.SetHTMLTemplate(t)
r.GET("/", func(c *gin.Context) {
c.HTML(http.StatusOK, "/templates/html/index.tmpl", gin.H{
"Foo": "学院君",
})
})
r.Run(":8080")
}
编译代码生成二进制文件:go build -o assets-in-binary assets.go template.go
本来效果如上图,但是现在,你需要修改为exe可执行文件
完成,现在测试效果。
法一:在服务器中,
法二:在git bash中,