http - 在 HTTP 服务器中提供静态文件
问题描述
我正在使用 golang 作为中型 Web 应用程序的后端,该应用程序在不同的文件夹中有几个页面和大量 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>
此处显示的错误
解决方案
问题是浏览器找不到那些 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)
这样一个 GET 请求http://[host]:[port]/css/style.css
将从相关./static/css/
目录返回 style.css。上面的代码在我的示例程序中运行。
推荐阅读
- amazon-redshift - Redshift 中的满载 - DROP 与 TRUNCATE
- blogdown - 锂主题网站的类别和标签
- spring-boot - Spring Boot 在不使用 HttpSecurity 的情况下访问 OAuth2 保护的资源?
- vba - 如何通过电子邮件将保管箱应用程序文件路径作为可点击的超链接?
- php - 有没有办法解决这个 Sprintf 问题
- c# - 如何在异步套接字中接收完整的屏幕截图?
- java - 将 maven 项目迁移到模块 - 忽略 module-info.java
- c# - Asp .Net Core 策略处理程序未触发
- c++ - C++ fstream 找不到相对路径
- c# - 在 WebAPI 中实现一个 TypeConverter 来对 Enum 进行描述