我有这个:
(defn about-page []
(layout/render "about.html" {:title "About"}))但是,由于我已经将目录“模板”从“资源”移动到根目录,而且在服务器上,我可能会将其放在另一个位置,它无法工作。我这么做是因为我不希望html模板嵌入到输出jar中。那么,如何使代码工作,如何才能访问“模板”中的html文件呢?
对于静态图像,css,js也有同样的问题:我现在把它们放在根目录中,所以它们不在“资源”中。它们在“公共”文件夹里。但是,当我将它们称为"public/css/css1.css“时,就找不到它们了,也就是说,路径localhost:3000/public/css/css1.css不存在。
我怎样才能告诉鲁米努斯我的静力学现在在哪里?
发布于 2016-05-20 04:22:20
模板定位
默认情况下,模板位于相对于ClassLoader URL的位置。如果您想为模板设置自定义位置,可以使用selmer.parser/ set -resource!要做到这一点: (selmer.parer/set-resource!) 还可以在相对于应用程序资源路径的位置设置根模板路径: (设置资源路径!(clojure.java.io/resource“META/foo/templates”) 这允许使用包含和扩展标记重新定义模板,而不必指定完整的路径。 若要将资源路径重置为默认路径,只需将其传递为零: 解析器/集合-资源-路径!(零) 然后,应用程序将在此位置查找模板。如果您将应用程序部署为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目录复制到该位置。
https://stackoverflow.com/questions/37337470
复制相似问题