我遵循GoLang教程here,但无论出于何种原因,我无法让应用程序为css和js提供服务。如果我在没有go服务器的情况下运行我的静态页面,页面css工作正常。另一方面,当我运行go服务器时,css不起作用。
以下是我的html类型:
ValueError: empty vocabulary; perhaps the documents only contain stop words
我的文件树看起来像这样
如何让我的go应用程序提供我需要的css和javascript?
问题已经解决,这是工作主要的:
<link rel="stylesheet" href="../assets/css/bootstrap.min.css">
<link rel="stylesheet" href="../assets/css/bootstrap-theme.min.css">
<link rel="stylesheet" href="../assets/css/custom.css">
.
.
.
then under the body tag
<script src="../assets/js/jquery.min.js"></script>
<script src="../assets/js/bootstrap.min.js"></script>
.
.
.
以下是我正在使用的处理程序的示例
func main() {
http.HandleFunc("/view/", makeHandler(viewHandler))
http.HandleFunc("/edit/", makeHandler(editHandler))
http.HandleFunc("/save/", makeHandler(saveHandler))
http.HandleFunc("/index/", makeHandler(indexHandler))
http.Handle("/static/", http.StripPrefix("/static/", http.FileServer(http.Dir("static"))))
http.ListenAndServe(":8080", nil)
}
答案 0 :(得分:18)
http.Handle("/", http.FileServer(http.Dir("css/")))
将在css
为您的/
目录提供服务。当然,您可以选择任何路径中的任何目录。
我可能会确保静态路径不会妨碍其他路径,并使用类似的东西。
http.Handle("/static/", http.StripPrefix("/static/", http.FileServer(http.Dir("static"))))
将js
和css
放在项目目录static
中。然后,它将在domain.com/static/css/filename.css和domain.com/static/js/filename.js上提供服务
StripPrefix
方法会删除前缀,因此它不会尝试搜索,例如在static
的{{1}}目录中,当然,它找不到。它会在static/css/filename.css
目录中查找css/filename.css
,这是正确的。
答案 1 :(得分:1)
我在我的模板文件的头部添加了一个指向apache服务器css目录的链接。我将所有go应用程序使用的模板和数据文件保留在go应用程序从其运行的目录下。在这种情况下,cgi-bin。
模板使用我的apache服务器assets/css
目录中的css:
<link rel="stylesheet" href="/assets/css/main.css" />