Go如何在我的html页面上使用JavaScript代码

时间:2017-03-05 19:01:47

标签: go

问题:我的index.html页面中有脚本src 标记但是在浏览器上这个脚本没有加载(实际上它加载但看起来像index.html文件0_0看到下面的图片)。问题是:如何在我的html页面上使用不同文件(myscripts.js)中的JavaScript代码?

js file looks like html ( index.html ) file

在谷歌搜索过程中,我找到了“解决方案”,但我并没有完全像它应该的那样工作。我刚刚将这一行添加到viewHandler方法:

http.ServeFile(w, r, r.URL.Path[1:])

在此之后,项目开始如下:

index.html after adding line above

总结一下:

我的目标是显示html页面并使用脚本/文件夹中的javascript函数。

项目结构:

-scripts 
 --myscripts.js
-templates
 --index.html
server.go

Server.go:

func viewHandler(w http.ResponseWriter, r *http.Request) {
    fmt.Println("listening . . .")
            tpl.ExecuteTemplate(w, "index.html", nil)
        }

func main() {

    http.HandleFunc("/", viewHandler)
        http.ListenAndServe(":8080", nil)
}

myscripts.js:

function clickFunc(){
console.log("clicked")
}

的index.html:     

<head>
<script type="text/javascript" src="scripts/myscripts.js"></script>
</head>
<body>

<button onclick="clickFunc()">Click me</button>

</body>
</html>

1 个答案:

答案 0 :(得分:2)

您应该能够使用http包来提供来自特定目录的静态文件。

例如:

func main() {
  ScriptsDirectory := http.FileServer(http.Dir("scripts"))
  http.Handle("/scripts", ScriptsDirectory)

  log.Println("Listening at port 3000")
  http.ListenAndServe(":3000", nil)
}

将允许您直接从该目录服务该文件。

您可以在此处引用 index.html 页面中的/scripts目录。

Here也是使用此技术的教程。