Go: embed static files in binary

匿名 (未验证) 提交于 2019-12-03 01:05:01

问题:

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!

回答1:

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



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!