【朵朵的实习成长日志07】使用 HTML 模板构建二进制文件

这篇博客介绍了如何在Gin框架中使用go-assets-builder工具,将HTML模板编译到二进制文件中,以便于单文件部署。首先设置GOPROXY,然后创建HTML模板文件,通过go-assets-builder生成assets.go。接着编写Web服务器代码,加载模板并使用Gin处理请求。最后,编译代码生成可执行文件,并提供了两种测试方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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中,

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云朵与月亮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值