猿问

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

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)

}

索引.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 而不是杀死这个进度?


湖上湖
浏览 183回答 1
1回答

波斯汪

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

相关分类

Go
我要回答