Golang Templates如何处理JS和CSS的路径

How to handle paths of JS and CSS in Golang Templates

目前在 Golang 站点工作,作为前端,我正在使用 go 模板。为了分隔网站的不同部分,我创建了这个模板:

  1. Head:包含 <head> 标签,以及一些 css
  2. 的导入
  3. header:定义站点的navbar,logo等,只有HTML
  4. 页脚:定义站点页脚的HTML。
  5. SomePage:定义body标签,本模板调用Head、Header和footer。该文件可以是例如索引、登录等。

我在嵌套页脚模板后添加了 Javascript 导入,但仍在正文标签内。例如,我将它们添加为:

<script src="public/js/SomeJS.js"></script>
<link href="public/css/SomeCSS.css" type="text/css" rel="stylesheet"/>

在我的项目的路由中,我定义了 public 来为那些静态文件提供服务,这工作得很好。现在,我有一些项目路线,可以说:

router.GET("/",controllers.Index)
router.GET("/login",controllers.Login)

对于第一个路径,库加载得很好。然后,将路由作为第二个,我无法加载它们,因为浏览器试图将这些文件定位为:

http://myserver/login/public/css/someCSS.css  instead of
http://myserver/public/css/someCSS.css

在这种情况下,我理解为什么要将 login 添加到 URL。 所以,我的问题是,它通常是如何处理的?

至此我将域和文件夹添加到导入中,示例:

<script src="MyDomain.com/public/js/SomeJS.js"></script>

但我真的不想这样做,因为只要域发生变化,我就应该编辑代码,这不太实用。另外,我不想在我创建的每个视图中添加库的导入。我有一些文件(CSS 和 JS)对所有项目都是通用的,我只想写一次。

谢谢!

在路径的存在中添加/,从domain root调用relative path

<script src="/public/js/SomeJS.js"></script>
<link href="/public/css/SomeCSS.css" type="text/css" rel="stylesheet"/>

没有/,从current domain directory调用为relative path。这就是你现在的行为。

输出:

http://myserver/public/css/someCSS.css
http://myserver/public/js/SomeJS.js