Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 为什么';我的模板不能在浏览器中渲染吗?_Html_Go - Fatal编程技术网

Html 为什么';我的模板不能在浏览器中渲染吗?

Html 为什么';我的模板不能在浏览器中渲染吗?,html,go,Html,Go,我想将模板渲染到浏览器。然而,什么也没有出现。 这是我正在运行的代码,main.go: package main import ( "html/template" "net/http" "log" ) func main() { mux := http.NewServeMux() mux.HandleFunc("/", home) log.Fatal(http.L

我想将模板渲染到浏览器。然而,什么也没有出现。 这是我正在运行的代码,main.go

    package main

    import (
        "html/template"
        "net/http"
        "log"
    )


    func main() {
        mux := http.NewServeMux()
        mux.HandleFunc("/", home)
        log.Fatal(http.ListenAndServe("0.0.0.0:8000", mux))
    }


    func home(w http.ResponseWriter, r *http.Request) {
        data := pageData{"MyTabTitle", "MyPageName"}

        tmpl := template.Must(template.ParseFiles("base.html"))
        tmpl.Execute(w, data)
    }


    type pageData struct {
        tabTitle, pageName string
    }

在同一个目录中,我还有base.html-文件


{{.tabTitle}}
{{.pageName}

页面数据字段未导出,因此模板引擎无法访问它们。将字段名和对模板中字段名的引用大写。另外,不要忽略模板执行错误。

您正在忽略错误。不要那样做。这个错误会告诉你问题出在哪里。还有一个术语说明:模板根本不会在浏览器中呈现。它在服务器上呈现,然后发送到浏览器。如果你想在浏览器中呈现,你必须使用客户端代码,可能是用JavaScript编写的。谢谢你的回答。当你说我忽略错误时,你是指html/template.template.Must吗?@KentMartin从
tmpl.Execute(w,data)
返回的错误被忽略了。它也很有可能找不到模板——编译过程中的本地目录与执行过程中的本地目录无关。很好的捕获,@Flimzy。
net/http
的编写方式,使得http处理程序中的所有恐慌都被捕获并记录下来;因此,它们应该出现在程序的标准错误流中。由于恐慌被捕获并记录下来,程序不会崩溃,即使
template.Must
可能会崩溃。谢谢你们的输入。我已将pageData中的字段大写,但在浏览器中仍然看不到任何内容。我是新手,不知道自己在做什么,但我知道接下来应该研究错误处理。检查tmpl.Execute()返回的错误后,我发现我忘记关闭base.html中的
-标记。现在一切正常。再次感谢你的帮助。