【发布时间】:2015-06-28 12:56:59
【问题描述】:
main.go
package main
import (
"html/template"
"net/http"
)
var templates = template.Must(template.ParseGlob("./templates/*"))
func viewHandler(w http.ResponseWriter, r *http.Request) {
err := templates.ExecuteTemplate(w, "indexPage", nil)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
}
func main() {
http.Handle("/static/", http.StripPrefix("/static/", http.FileServer(http.Dir("static"))))
http.HandleFunc("/index", viewHandler)
http.ListenAndServe(":8090", nil)
}
index.html
{{define "indexPage"}}
<html>
{{template "header"}}
<body>
<nav class="navbar navbar-default">
<div class="container-fluid">
<div class="navbar-header">
<a class="navbar-brand" href="#">Welcome to TDT Project</a>
</div>
</div>
</nav>
<div class="btn-group-vertical">
<a href="#" class="btn btn-default">Button</a>
<a href="#" class="btn btn-default">Button</a>
</div>
</body>
</html>
{{end}}
另一个html文件是header.html,是正确的。
当我更改html并再次运行main.go时,为什么视图总是一样?(我已经清理了浏览器的缓存)例如,将“欢迎”更改为“www”,浏览器确实发生了变化.
然后我杀掉main.go的进程,再次运行,视图变了。
有没有更好的方法来停止 main.go 而不是终止这个进度?
【问题讨论】:
-
如何为您的 html 提供服务?静态文件还是模板?
-
@inf 我使用模板
-
@inf 我认为这与提供 html 的方式无关。因为即使我更改了html的内容,浏览器中的视图也不会改变。(例如
test1
到
test2
,在浏览器中是“test1”)
-
没有任何代码很难提供明确的答案,但很有可能您在启动时只解析一次模板。这很好——解析每个请求真的很慢——但解释了为什么在应用重新启动之前看不到更新的模板。 github.com/unrolled/render 可以通过一个标志来帮助这一点,以便仅在开发期间重新加载模板。
-
@elithrar 我已经说清楚了:)
标签: web go browser-cache