2

我用 Martini 编写了我的第一个 Go 应用程序。我有命名参数的路线:

m := martini.Classic()

staticOptions := martini.StaticOptions{Prefix: "assets"}
m.Use(martini.Static("assets", staticOptions))

m.Get("/edit/:id", editHandler)
m.Run()

editHandler 使用引导样式表和脚本呈现编辑模板,这些脚本位于相应assets/cssassets/js文件夹中。

<link rel="stylesheet" type="text/css" href="assets/css/bootstrap.min.css">
<script type="text/javascript" src="assets/js/bootstrap.min.js"></script>

但是当我在浏览器中打开编辑页面时,我的静态文件不会加载,因为浏览器会向edit/assets/css/bootstrap.min.cssedit/assets/js/bootstrap.min.js. 如何去除任何路由前缀?(“编辑”、“显示”等)

4

1 回答 1

3

您提供的 html 片段中的链接是相对链接。这意味着当浏览器解析 URL 时,它会将给定的路径附加到当前主机和路径,即http://<hostname_and_port>/edit + assets/css/bootstrap.min.css.

您可以使用根路径而不是相对路径来确保当浏览器解析 url 时,无论完整的 URL 路径是什么,它都会将给定的路径附加到主机的根目录。这是通过在路径的开头放置一个正斜杠来完成的。src在下面的示例中,我在和href属性路径中添加了一个正斜杠。

<link rel="stylesheet" type="text/css" href="/assets/css/bootstrap.min.css">
<script type="text/javascript" src="/assets/js/bootstrap.min.js"></script>
于 2015-10-25T15:49:15.393 回答