如何在Golang模板中处理JS和CSS的路径

时间:2017-08-06 01:01:35

标签: go-templates

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

  1. Head:包含<head>标记和一些css导入
  2. 标题:定义网站,徽标等的导航栏。它只是HTML
  3. 页脚:定义网站页脚的HTML。
  4. SomePage:定义body标签,此模板调用Head,Header和footer。该文件可以是例如索引,登录等。
  5. 我在嵌套页脚模板后添加了Javascript导入,但仍然在body标记内。例如,我添加了它们:

    <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添加到网址中。 所以,我的问题是,它是如何正常处理的?

    到目前为止,我已将域和文件夹添加到导入中,例如:

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

    但我真的不想这样做,因为任何时候域名改变我应该编辑代码而且它不是真正的实用。另外,我不想在我创建的每个视图中添加库的导入。我有一些文件(CSS和JS)对于所有项目都很常见,我只想写一次。

    谢谢!

1 个答案:

答案 0 :(得分:1)

在路径的存在中添加/,它从relative path称为domain root

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

如果没有/,则会从relative path将其称为current domain directory。这就是你现在的行为。

输出:

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