小编典典

前往:将静态文件嵌入二进制文件

go

这可能是一个非常业余的问题。我正在尝试将静态文件嵌入到二进制文件中。html。如何使用https://github.com/jteeuwen/go-
bindata做到这一点?

因此,我可以使用此https://github.com/jteeuwen/go-bindata#accessing-an-
asset访问资产,但是该如何处理“数据”,以及如何解析文件,执行模板以及服务他们在目录中?

我在网上找不到任何示例,将不胜感激!


阅读 301

收藏
2020-07-02

共1个答案

小编典典

给定这样的目录结构:

example/
    main.go
    data/hi.html

例子/ main.go

package main

import (
    "html/template"
    "log"
    "net/http"
    "os"
)

var tmpl *template.Template

func init() {
    data, err := Asset("data/hi.html")
    if err != nil {
        log.Fatal(err)
    }
    tmpl = template.Must(template.New("tmpl").Parse(string(data)))
}

func main() {
    // print to stdout
    tmpl.Execute(os.Stdout, map[string]string{"Name": "James"})

    http.HandleFunc("/", func(w http.ResponseWriter, req *http.Request) {
        tmpl.Execute(w, map[string]string{"Name": "James"})
    })

    log.Fatal(http.ListenAndServe(":8000", nil))
}

示例/数据/hi.html

<h1>Hi, {{.Name}}</h1>

像这样运行:

go-bindata data && go build && ./example

控制台输出:

<h1>Hi, James</h1>

HTTP输出:

嗨,詹姆斯

2020-07-02