做法
安裝套件。
1
| go get -u github.com/gobuffalo/packr/v2/packr2
|
載入檔案
使用 packr.New()
方法指定靜態資源的目錄,並將檔案載入。
1 2 3 4 5 6 7
| func main() { box := packr.New("new", "./public") html, err := box.FindString("index.html") if err != nil { log.Fatalln(err.Error()) } }
|
渲染頁面
如果要渲染一個頁面,可以使用以下方式:
1 2 3 4 5 6 7 8 9 10 11
| func Index(w http.ResponseWriter, r *http.Request) { box := packr.New("new", "../public") html, err := box.FindString("index.html") if err != nil { log.Fatalln(err.Error()) } tmpl, err := template.New("index").Parse(html) if err := tmpl.Execute(w, nil); err != nil { log.Fatalln(err.Error()) } }
|
靜態資源伺服器
為了提供 CSS 和 JavaScript 等靜態資源,靜態資源伺服器的使用如下:
1 2 3 4 5 6
| func main() { box := packr.New("assets", "./public/assets")
http.Handle("/", http.FileServer(box)) http.ListenAndServe(":3000", nil) }
|
搭配 Mux 路由的使用如下:
1 2 3 4 5 6
| func main() { r := mux.NewRouter() box := packr.New("assets", "./public/assets") r.PathPrefix("/assets/").Handler(http.StripPrefix("/assets/", http.FileServer(box))) log.Fatalln(http.ListenAndServe(":3000", r)) }
|
編譯
使用 packr
執行檔進行編譯。
參考資料