在 golang 服务器上执行模板时,我遇到一个问题,html 文件中的 src 属性搜索导入的 javascript 文件不在根位置(服务器文件夹),而是在处理的 url 下方。因此,请求 src='/dir/file.js'
的当前位置如 http://localhost:8080/handled/
将对 http 发出 GET 请求://localhost:8080/handled/dir/file.js
。
package main
import ("net/http"; "html/template")
var templates = template.Must(template.ParseFiles("././dir/file.html"))
type Page struct {
Title string
Body []byte
}
func testHandler(w http.ResponseWriter, r *http.Request) {
page := Page{"handled", nil}
err := templates.ExecuteTemplate(w, "file.html", p)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
}
}
func main() {
http.HandleFunc("/handled/", testHandler)
http.ListenAndServe(":8080", nil)
}
因此,模板 file.html 包含以下行:
<!-- file.html
javascript placed right inside template file is working,
but I didnt managed to get to work src insertation -->
<script src="file.js"></script>
...file.js 与 file.html 共享同一目录。 我尝试了不同的文件位置和各种路径组合。看来我做错了。
最佳答案
如果您的浏览器正在请求/handled/dir/file.js,那么您的 src 必须缺少初始正斜杠。这不是 Go 特定的问题。
我看到你说你请求的文件有 src="/dir/file.js",但是在你的例子中你显示 src="file.js",所以我不确定你到底有什么。但是,您的问题仍然表明忘记了第一个斜杠,例如 src="dir/file.js"
关于javascript - golang 模板中的 src 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24377759/