![](/img/trans.png)
[英]How to make a .net web application run as the root application in Visual Studio
[英]How does the root of a Go web application get resolved?
我正在使用go的net/http
库提供Web应用程序。 当用户访问该网站时,他们只需访问/,即可提供index.html(与其他任何网站一样)。
这是使用以下方法实现的:
r.PathPrefix("/").Handler(http.FileServer(http.Dir("./")))
但是,有两种构建此类应用程序的方法。 首先,您可以将所有文件打包在同一目录中。 在我看来,这是一个不稳定的解决方案(如果我直接运行go文件,它将失败)。
src/bin/app.go
src/bin/index.html
或者,使用更“传统”的样式,其中index.html是顶级样式。
src/bin/app.go
index.html
更新 (下面的答案是正确的,我在下面实现了Not_a_golfer的建议,我的目录树看起来像这样,在任何环境中都可以通过conf或服务器中的动态逻辑轻松维护)。
├── src
│ └── main
│ └── app.go
└── static
├── index.html
├── script.js
└── style.css
由于Go不会将资产捆绑到二进制文件中,因此将代码和资产捆绑在一起绝对不是一个好主意。
我建议以下之一:
首先,在两种情况下-使您的应用程序都可配置,以便它可以通过命令行标志或配置文件接受保存静态资产的位置。 它应该是绝对路径,因为它与可执行文件的存储位置无关。
并且:
为静态资产保留一个完全独立的项目,并在构建步骤中确保将它们打包在一起。 实际上,您可以将它们分别部署到服务器上,因此,如果仅部署HTML / JS /图像更改,则不必重新启动Go应用程序。
将它们的源代码放在同一项目中,但创建一个名为“ html”或“ static”或任何其他名称的顶级目录。 此目录下不允许有Go文件。 部署过程应与#1中的相同。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.