Go:以二进制格式嵌入静态文件 [英] Go: embed static files in binary
问题描述
因此,我可以通过 https://github.com/jteeuwen/go-bindata#accessing-an-asset ,但我该如何处理数据,以及如何解析文件,执行模板并提供服务他们在目录中?
我找不到任何网上的例子,并会感谢一些帮助!
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 :=资产(data / hi.html)
如果err!= nil {
log.Fatal(err)
}
tmpl = template.Must(template.New(tmpl).Parse(string(data)))
func main(){
//打印到标准输出
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))
}
$ p
$ b $ p $ <$ c $ c>< h1> Hi,{{.Name}}< / h1>
运行方式如下:
go-bindata data&&去建立&& ./example
控制台输出:
< h1> Hi,James< / h1>
HTTP输出:
Hi,James
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!
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
这篇关于Go:以二进制格式嵌入静态文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!