为了账号安全,请及时绑定邮箱和手机立即绑定

为什么当我再次运行 main.go 时视图相同

为什么当我再次运行 main.go 时视图相同

Go
湖上湖 2021-10-18 15:04:16
main.gopackage mainimport (    "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)}索引.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,为什么视图总是一样?(我清理了浏览器的缓存)比如把“Welcome”改成“wwww”,浏览器确实变了。然后我杀掉main.go的进度,再次运行,视图变了。有没有更好的方法来停止 main.go 而不是杀死这个进度?
查看完整描述

1 回答

?
波斯汪

TA贡献1811条经验 获得超4个赞

您只渲染一次模板作为templates全局变量。

每次可以将渲染移动到函数时重新渲染模板。然而,这对性能不利,因为渲染非常昂贵,但在开发过程中没问题。例如,您可以使用@elithrar 提出的替代方案。另一种选择是使用gin并修改它以扫描 html 文件,而不仅仅是 go 文件。


查看完整回答
反对 回复 2021-10-18
  • 1 回答
  • 0 关注
  • 182 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信