Как обрабатывать пути JS и CSS в шаблонах Golang

в настоящее время я работаю на сайте Golang, в качестве внешнего интерфейса я использую шаблоны go. Чтобы разделить разные части сайтов, я создал следующие шаблоны:

  1. Заголовок: содержит тег <head> и некоторый импорт css
  2. Заголовок: определение панели навигации сайта, логотипа и т. д. Это только HTML
  3. Нижний колонтитул: определение HTML нижнего колонтитула сайта.
  4. SomePage: определяя тег body, этот шаблон вызывает Head, Header и Footer. Этот файл может быть, например, индексом, логином и т. д.

Я добавил импорт 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 к URL-адресу. Итак, мой вопрос: как это обычно обрабатывается?

К настоящему времени я добавил домен и папку в импорт, например:

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

Но я действительно не хочу делать это таким образом, потому что каждый раз, когда меняется домен, я должен редактировать код, а это не очень практично. Кроме того, я не хочу добавлять импорт библиотек в каждое создаваемое представление. У меня есть несколько файлов (CSS и JS), которые являются общими для всего проекта, и я просто хочу написать их один раз.

Благодарю вас!


person Sredny M Casanova    schedule 06.08.2017    source источник


Ответы (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
person jeevatkm    schedule 06.08.2017