Как я могу обрабатывать HTML-файлы в Luminus, которые не находятся в "ресурсах"?
У меня есть это:
(defn about-page []
(layout/render "about.html" {:title "About"}))
Но так как я переместил каталог "шаблоны" из "ресурсов" в корневой каталог и на сервере я мог бы поместить его в другое место, он не работает. Я сделал это, потому что я не хочу, чтобы HTML-шаблоны были встроены в выходной файл. Итак, как я могу заставить код работать, как я могу получить доступ к моим html-файлам в "шаблонах"?
И тот же вопрос для статических изображений, css, js: я поместил их сейчас в корневой каталог, чтобы они не были в "ресурсах". Они в "публичной" папке. Однако, когда я называю их "public/css/css1.css", они не обнаруживаются, то есть путь localhost:3000/public/css/css1.css не существует.
Как я могу сказать Luminus, где сейчас находятся мои статики?
1 ответ
Расположение шаблонов
Документация Selmer описывает, как изменить расположение шаблонов:
По умолчанию шаблоны расположены относительно URL-адреса ClassLoader. Если вы хотите установить пользовательское местоположение для шаблонов, вы можете использовать selmer.parser / set-resource-path! сделать это:
(selmer.parser/set-resource-path! "/var/html/templates/")
Также можно установить путь к корневому шаблону в местоположении относительно пути к ресурсам приложения:
(set-resource-path! (clojure.java.io/resource "META-INF/foo/templates"))
Это позволяет повторно ссылаться на шаблоны с помощью тегов include и extends без указания полного пути.
Чтобы сбросить путь ресурса к значению по умолчанию, просто передайте ему ноль:
(selmer.parser/set-resource-path! nil)
Приложение будет искать шаблоны в этом месте. Это может быть полезно, если вы развертываете приложение в виде jar-файла и хотите иметь возможность изменять HTML-код без его повторного развертывания.
Поскольку вы хотите, чтобы ваши шаблоны перезагружались при их изменении, вы также должны помнить, что Selmer кеширует их:
При рендеринге файлов Selmer будет кэшировать скомпилированный шаблон. Повторная компиляция будет инициирована, если последняя измененная временная метка файла изменится. Обратите внимание, что изменения в файлах, на которые ссылается шаблон, не будут вызывать перекомпиляцию. Это означает, что если ваш шаблон расширяет или включает другие шаблоны, вы должны коснуться файла, который отображается, чтобы изменения вступили в силу.
Кроме того, вы можете включить и выключить кеширование, используя
(selmer.parser/cache-on!)
а также(selmer.parser/cache-off!)
соответственно.
Расположение активов
Обработка статических ресурсов настраивается с помощью site-defaults
в вашем <app>.middleware
Пространство имен. Вам нужно настроить его ' :static
запись для использования :files
вместо:
(-> site-defaults
(assoc :static {:files "/var/www/html"}))
и вам нужно скопировать файлы из resources/public
каталог к этому месту.