当我想渲染包含js文件上的脚本链接的html文件时,我收到错误。 但是当我加载页面时,我得到了这个错误:
Started GET "/views/script.js" .... Returning 404
我的文件夹就像这样
|--todolist
|--main.go
|--views/
|--index.html
|--script.js
main.go
package main
import (
"github.com/zenazn/goji"
"html/template"
"net/http"
)
func renderHTMLPage(w http.ResponseWriter, path string) {
t, err := template.ParseFiles(path)
if err != nil {
panic(err)
}
t.Execute(w, nil)
}
func Index(w http.ResponseWriter, r *http.Request) {
renderHTMLPage(w, "./views/index.html")
}
func main() {
goji.Get("/", Index)
goji.Serve()
}
视图/ index.html中
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Le titre du document</title>
</head>
<body>
<script src="https://code.jquery.com/jquery-1.10.2.js"></script>
<script src="script.js"></script>
<h1>To-Do List </h1>
<ul id="todolist">
<li> Hello <button>Delete</button></li>
<li> Wesh <button>Delete</button></li>
</ul>
<input type="text" id="new-text" /><button id="add">Add</button>
</body>
</html>
视图/的script.js
function addListItem() {
var text = $('#new-text').val()
if (text != "") {
$('#todolist').append('<li>'+text+'<button id="dede" name=\"' + i + '\">Delete</button></li>')
}
$('#new-text').val("")
}
function deleteItem() {
$(this).parent().remove()
}
$(function() {
$('#add').on('click', addListItem);
$("#todolist").on("click", "#dede", deleteItem)
});
如何正确加载js文件?
创建一个只在构造中使用jquery / javascript和golang api的应用程序的最佳方法是什么?
谢谢
答案 0 :(得分:1)
您需要:
/views
的目录服务 - 例如goji.Get(&#34; / views / *&#34;,http.FileServer(http.Dir(&#34; / Users / matt / Desktop / views /&#34;)))`http.StripPrefix
(推荐)以下允许您将路径与目录名称分离:
func main() {
goji.Get("/views/*", http.StripPrefix("/views", http.FileServer(http.Dir("/Users/matt/Desktop/views/"))))
goji.Get("/", Index)
goji.Serve()
}
我建议不要在&#39; root&#39; - /*
。更好地从专用资产路径提供服务,因为它在查看缓存,与CDN交互等时更容易。
答案 1 :(得分:0)
在这种特殊情况下,代码应该看起来像
goji.Get("/", Index)
goji.Get("/*", http.FileServer(http.Dir("./views")))
goji.Serve()
但我必须说保持模板和静态文件在同一目录中是个坏主意,也不能从root用户提供静态文件。