在 HTTP 服务器中提供静态文件
Serving static files in an HTTP server
我正在使用 golang 作为 medium-sized 网络应用程序的后端,该应用程序有几个页面,并且在不同的文件夹中有很多 CSS 和 javascript,我正在尝试使用 golang 为网站提供服务,但仅加载索引文件,其他页面 javascript、CSS 加载。由于我的 HTML 个文件,所有文件都不相同我没有使用模板
这是文件结构
-static
-assets
-css(folder with subfolders)
-js(folder with subfolders)
-pages (folder with differnt html pages)
-signup.html
-dashboard.html
-index.html
-register_bundle.js
-main.go
func handlerequests (){
myRouter := mux.NewRouter().StrictSlash(true)
myRouter.Handle("/", http.FileServer(http.Dir("./static")))
myRouter.HandleFunc("/transaction", transactionHandler)
log.Fatal(http.ListenAndServe(":8080",myRouter))
}
我的 HTML 文件有这样的链接,(显示 index.html)
<!-- CSS Files -->
<link href="./assets/css/bootstrap.min.css" rel="stylesheet" />
<link href="./assets/css/paper-dashboard.css?v=2.1.1" rel="stylesheet" />
<!--JS files -->
<script src="./assets/demo/demo.js"></script>
<!--Main Script file for the page -->
<script src="./register_bundle.js"></script>
此处显示的错误
您是否尝试为您的资源文件夹提供处理程序?
sdir := "/resources/"
myRouter.PathPrefix(sdir).Handler(http.StripPrefix(sdir, http.FileServer(http.Dir("."+sdir))))
这允许您将文件夹作为子域访问。
问题是浏览器找不到那些 JS 和 CSS 文件。
fs := http.FileServer(http.Dir("./static"))
MUXRouter.Handle("/", fs)
MUXRouter.PathPrefix("/assets/").Handler(fs)
MUXRouter.PathPrefix("/pages/").Handler(fs)
MUXRouter.Handle("/register_bundle.js", fs)
这样,对 http://[host]:[port]/css/style.css
的 GET 请求将从相对 ./static/css/
目录 return style.css 。上面的代码在我的示例程序中有效。
尝试
gor:= mux.NewRouter().StrictSlash(true)
fs := http.FileServer(http.Dir("./static"))
gor.PathPrefix("/transaction").Handler(fs)
如果它不只是尝试阅读 http.FileServer
的文档,它可能应该可以工作
我正在使用 golang 作为 medium-sized 网络应用程序的后端,该应用程序有几个页面,并且在不同的文件夹中有很多 CSS 和 javascript,我正在尝试使用 golang 为网站提供服务,但仅加载索引文件,其他页面 javascript、CSS 加载。由于我的 HTML 个文件,所有文件都不相同我没有使用模板
这是文件结构
-static
-assets
-css(folder with subfolders)
-js(folder with subfolders)
-pages (folder with differnt html pages)
-signup.html
-dashboard.html
-index.html
-register_bundle.js
-main.go
func handlerequests (){
myRouter := mux.NewRouter().StrictSlash(true)
myRouter.Handle("/", http.FileServer(http.Dir("./static")))
myRouter.HandleFunc("/transaction", transactionHandler)
log.Fatal(http.ListenAndServe(":8080",myRouter))
}
我的 HTML 文件有这样的链接,(显示 index.html)
<!-- CSS Files -->
<link href="./assets/css/bootstrap.min.css" rel="stylesheet" />
<link href="./assets/css/paper-dashboard.css?v=2.1.1" rel="stylesheet" />
<!--JS files -->
<script src="./assets/demo/demo.js"></script>
<!--Main Script file for the page -->
<script src="./register_bundle.js"></script>
此处显示的错误
您是否尝试为您的资源文件夹提供处理程序?
sdir := "/resources/"
myRouter.PathPrefix(sdir).Handler(http.StripPrefix(sdir, http.FileServer(http.Dir("."+sdir))))
这允许您将文件夹作为子域访问。
问题是浏览器找不到那些 JS 和 CSS 文件。
fs := http.FileServer(http.Dir("./static"))
MUXRouter.Handle("/", fs)
MUXRouter.PathPrefix("/assets/").Handler(fs)
MUXRouter.PathPrefix("/pages/").Handler(fs)
MUXRouter.Handle("/register_bundle.js", fs)
这样,对 http://[host]:[port]/css/style.css
的 GET 请求将从相对 ./static/css/
目录 return style.css 。上面的代码在我的示例程序中有效。
尝试
gor:= mux.NewRouter().StrictSlash(true)
fs := http.FileServer(http.Dir("./static"))
gor.PathPrefix("/transaction").Handler(fs)
如果它不只是尝试阅读 http.FileServer
的文档,它可能应该可以工作