Я строил шаблон lein new compojure-app
. У меня есть маршрут до /
, который отлично работает, а также маршрут до /foo/
, который работает. Между двумя страницами изменяется только тело, поэтому я хотел бы придерживаться так, как я могу, в общую функцию просмотра (я использую значение по умолчанию common
в views/layout.clj
). Однако при обслуживании ресурсов по относительному пути, например css/main.css
, мой маршрут до /
работает нормально, но маршрут до /foo/
ищет /foo/css/main.css
вместо поиска в корневом каталоге. Как обслуживать статические ресурсы с относительными путями к произвольным маршрутам?Обслуживание статических ресурсов с относительными путями в Clojure на разные маршруты
2
A
ответ
2
Вам необходимо использовать промежуточное программное обеспечение wrap-base-url
вместе с include-css
. wrap-base-url
установит *base-url*
динамический var, который будет использоваться для создания URL-адресов для ресурсов, включенных в include-css
, include-js
или напрямую с помощью to-url
.
Если вы развертываете приложение как войну в контейнере сервлетов, wrap-base-url
автоматически определит корневой контекст вашего приложения (например, /my-app/
). В противном случае вам необходимо указать корневой путь вручную в качестве второго аргумента.
Немного больше ясности: Строка, передаваемая 'include-css', должна начинаться с'/'. Другими словами, не делайте этого: '(include-css" css/main.css ")'. Вместо этого сделайте следующее: '(include-css" /css/main.css ")'. Тонкий, но это разница между работой и нет. –