在具有非常规目录结构的同一页面上提供 HTML 模板和 CSS?
Serving HTML template and CSS on the same page with unconventional directory structure?
我一直在尝试弄清楚如何在同一页面上提供 css 和 html 几次,但我总是以沮丧和使用 bootstrap 告终。不过,我真的很想让我的下一个项目有自己的手写 css。我的源代码树看起来像这样。
- cmd
- main.go
- static
- css
- templates
我的源代码树看起来像这样的原因是因为我想在 cmd 中有两个包:一个用于提供模拟数据,另一个用于 运行 实际应用程序。我看过其他使用 http.FileServer 的帖子,但是项目结构与目录根目录中的 main.go 文件有很大不同。我尝试做类似的路径:
fs := http.FileServer(http.Dir("../static/css"))
http.Handle("/signup/", http.StripPrefix("/static/css", fs))
如上面评论中所述,您放置文件的目录将与编译后的二进制文件相关。
go run main.go
将在您的当前目录中编译,然后 运行 可执行文件,因此您的应用程序中的任何路径都将来自您的应用程序 编译的位置 不是整体项目结构。我将尝试在下面展示一个示例:
// Current working directory
/your-github-username/project-folder
// Folder with entry point (main.go)
/your-github-username/project-folder/cmd
// Folder with static files (css file)
/your-github-username/project-folder/static
如果您在 /your-github-username/project folder
中 运行 go run ./cmd/main.go
,那么按照您在问题中所写的方式,您的应用程序将尝试从 /your-github-username/static
加载静态文件。即从您 运行 go run
命令所在的位置向上一个文件夹。
但是如果您构建和部署应用程序,则需要相对于放置 已编译二进制文件.[=19 的位置重新创建 /static
文件夹=]
在你的 main.go
中做的一件好事是有某种 初始化函数 检查所需的文件夹,创建它们,然后在它们为空时输出指令etc 仍然需要在部署过程中放入一些东西。
如果您想要一个非常好的静态文件托管示例,我建议您查看 go-chi 路由器库示例,因为有一些很棒的示例,包括静态文件托管一:
我一直在尝试弄清楚如何在同一页面上提供 css 和 html 几次,但我总是以沮丧和使用 bootstrap 告终。不过,我真的很想让我的下一个项目有自己的手写 css。我的源代码树看起来像这样。
- cmd
- main.go
- static
- css
- templates
我的源代码树看起来像这样的原因是因为我想在 cmd 中有两个包:一个用于提供模拟数据,另一个用于 运行 实际应用程序。我看过其他使用 http.FileServer 的帖子,但是项目结构与目录根目录中的 main.go 文件有很大不同。我尝试做类似的路径:
fs := http.FileServer(http.Dir("../static/css"))
http.Handle("/signup/", http.StripPrefix("/static/css", fs))
如上面评论中所述,您放置文件的目录将与编译后的二进制文件相关。
go run main.go
将在您的当前目录中编译,然后 运行 可执行文件,因此您的应用程序中的任何路径都将来自您的应用程序 编译的位置 不是整体项目结构。我将尝试在下面展示一个示例:
// Current working directory
/your-github-username/project-folder
// Folder with entry point (main.go)
/your-github-username/project-folder/cmd
// Folder with static files (css file)
/your-github-username/project-folder/static
如果您在 /your-github-username/project folder
中 运行 go run ./cmd/main.go
,那么按照您在问题中所写的方式,您的应用程序将尝试从 /your-github-username/static
加载静态文件。即从您 运行 go run
命令所在的位置向上一个文件夹。
但是如果您构建和部署应用程序,则需要相对于放置 已编译二进制文件.[=19 的位置重新创建 /static
文件夹=]
在你的 main.go
中做的一件好事是有某种 初始化函数 检查所需的文件夹,创建它们,然后在它们为空时输出指令etc 仍然需要在部署过程中放入一些东西。
如果您想要一个非常好的静态文件托管示例,我建议您查看 go-chi 路由器库示例,因为有一些很棒的示例,包括静态文件托管一: