gpt4 book ai didi

clojure - Compojure 模板页面

转载 作者:行者123 更新时间:2023-12-02 18:36:00 25 4
gpt4 key购买 nike

我有一堆共享相同页眉和页脚的静态 html 文件。我想要在所有页面上共享此页眉和页脚。现在我使用以下路由,但它有点难看,我必须处理所有特殊情况。有没有简单的方法可以做到这一点,例如 php 的 include 函数?


(defroutes my-app
(GET "/"
(html-with-template
"main.header" "index.body" "main.footer" ))
(GET "/*.html"
(html-with-template
"main.header" (str (params :*) ".body") "main.footer" ))
(GET "/*/"
(html-with-template
(str (params :*) "/folder.header")
(str (params :*) "/index.body")
(str (params :*) "/folder.footer")))
(GET "/*"
(or (serve-file (params :*)) :next))
(ANY "*"
(page-not-found)))

最佳答案

根据我所读到的有关 Compojure 的内容,我认为它不像 PHP 那样对响应正文的“自动前置”和“自动附加”概念具有固有的支持。

我使用过的其他 Web 框架将这一责任委托(delegate)给他们的模板引擎,而 PHP 则有点模糊了界限。它们通过允许您在此处显式“包含”公共(public)片段,或呈现宏,甚至通过基本形式的继承(此模板扩展了该模板)来实现这一点。

基本上,无论您的 HTML 是静态还是动态,模板引擎都允许您进行模块化以获得更好的可维护性。

也就是说,Compojure 似乎没有捆绑一个成熟的 HTML 模板引擎。它确实有一个很好的小型 HTML/XML 特定于域的语言 (DSL),但我认为您正在寻找的更多的是可以与 Compojure 一起使用的一流模板引擎。

Enlive似乎是受 Clojure 启发的模板引擎最受欢迎,但我确信还有其他引擎。鉴于 Clojure 的 JVM 集成,您可以从 Java-inspired templating engines 中的任何一个中进行选择以及。

根据您选择的代码,您可能需要编写几行粘合代码来加载、渲染模板并将其传输到 Compojure HTTP 响应中,但您只需编写一次即可在任何地方重复使用。

关于clojure - Compojure 模板页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1340673/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com