转到:将静态文件嵌入二进制文件

转到:将静态文件嵌入二进制文件

问题描述:

This might be a very amateur question. I'm trying to embed static files into binary, ie. html. How do I do that with https://github.com/jteeuwen/go-bindata?

So I can access an asset with this https://github.com/jteeuwen/go-bindata#accessing-an-asset, but what do I do with "data", and how to do I parse files, execute template, and serve them in the directory?

I couldn't find any examples online, and will appreciate some help!

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

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

我在网上找不到任何示例,请多多帮助! p> div>

Given a directory structure like so:

example/
    main.go
    data/hi.html

example/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))
}

example/data/hi.html

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

run like so:

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

Console Output:

<h1>Hi, James</h1>

HTTP output:

Hi, James