我如何在Go Lang中提供CSS和JS

时间:2017-04-25 04:02:25

标签: go web-applications server

我遵循GoLang教程here,但无论出于何种原因,我无法让应用程序为css和js提供服务。如果我在没有go服务器的情况下运行我的静态页面,页面css工作正常。另一方面,当我运行go服务器时,css不起作用。

以下是我的html类型:

ValueError: empty vocabulary; perhaps the documents only contain stop words

我的文件树看起来像这样

enter image description here

如何让我的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)
}

2 个答案:

答案 0 :(得分:18)

http.Handle("/", http.FileServer(http.Dir("css/")))

将在css为您的/目录提供服务。当然,您可以选择任何路径中的任何目录。

我可能会确保静态路径不会妨碍其他路径,并使用类似的东西。

http.Handle("/static/", http.StripPrefix("/static/", http.FileServer(http.Dir("static"))))

jscss放在项目目录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" />

go apps run from my cgi-bin dir

sytle sheets are served from my apache assets/css dir