直接上代码:
go:
package main import ( "fmt" "html/template" "net/http" ) type V struct { A string } func main() { Serve() } func Serve() { //静态文件服务 http.Handle("/static/", http.StripPrefix("/static/", http.FileServer(http.Dir("./static")))) http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { // 解析指定文件生成模板对象 t, _ := template.New("").Delims("[[", "]]").ParseFiles("v/main.vue") Data := V{A: "pu369:go+vue真是稀缺组合"} //渲染输出 t.ExecuteTemplate(w, "main1", Data) }) fmt.Println("http://localhost:8000") http.ListenAndServe(":8000", nil) }
v/main.vue
[[define "main1"]] <html> <head> <!-- 注意以下三行引入顺序 --> <link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css"> <script src="https://unpkg.com/vue/dist/vue.js"></script> <script src="https://unpkg.com/element-ui/lib/index.js"></script> </head> <body> [[.A]] <div id="app"> </div> <script> var app=new Vue({ el:"#app" }) </script> </body> </html> [[end]]
要点:
1、template.New的参数可以为空
2、当Delims和ParseFiles连用时,要配合t.ExecuteTemplate ,而不是t.Execute。
3、如:首先用Delims("[[", "]]")指定新定界符为 双中括号,然后在t.ExecuteTemplate中的模板名(如:main1)必须与模板中用[[define "main1"]] 一样。还有坑:注意模板名main1是带双引号的,并且define已经采用双中括号了。