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

前端之家收集整理的这篇文章主要介绍了我如何在Go Lang中提供CSS和JS前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我遵循GoLang教程 here,但无论出于何种原因,我都无法让应用程序服务于css和js.如果我在没有go服务器的情况下运行静态页面,页面css工作正常.另一方面,当我运行go服务器时,css不起作用.

这是我的html类似:

<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>

.
.
.

我的文件树看起来像这样

如何让我的go应用程序提供我需要的css和javascript?

问题已经解决了,这里是工作主要的:

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)
}

这是我正在使用的处理程序的示例

func indexHandler(w http.ResponseWriter,r *http.Request,title string) {
    p := &Page{Title: title}
    err := templates.ExecuteTemplate(w,"index.html",p)
    if err != nil {
        http.Error(w,err.Error(),http.StatusInternalServerError)
    }
}

解决方法

您可以像这样提供静态文件的目录:
http.Handle("/",http.FileServer(http.Dir("css/")))

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

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

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

将js和css放在项目中的static目录中.然后,它将在domain.com/static/css/filename.css和domain.com/static/js/filename.js上提供服务.

StripPrefix方法删除前缀,因此它不会尝试搜索例如在static / css / filename.css的静态目录中,当然,它不会找到.它会在静态目录中查找css / filename.css,这是正确的.

猜你在找的CSS相关文章