Шаблонные страницы - PullRequest
       7

Шаблонные страницы

8 голосов
/ 27 августа 2009

У меня есть куча статических html-файлов, которые имеют одинаковые верхний и нижний колонтитулы. я хотел бы поделиться этим верхним и нижним колонтитулом на всех страницах. Сейчас я используйте следующее, но это немного уродливо, и я должен позаботиться обо всех особых случаях. Есть ли легкий путь к таким вещам, как функция включения php?

<code>
(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)))

1 Ответ

8 голосов
/ 09 сентября 2009

Из того, что я читал о Compojure, я не думаю, что ему присущи понятия «автозаполнение» и «автоматическое добавление» в тело ответа, как в PHP.

Другие веб-фреймворки, с которыми у меня есть опыт, делегируют эту ответственность их шаблонизатору, тогда как PHP немного размывает строки. Они делают это, позволяя вам явно «включать» здесь общий фрагмент, или визуализировать макрос, или даже посредством элементарных форм наследования (этот шаблон расширяет этот шаблон).

По сути, независимо от того, является ли ваш HTML статическим или динамическим, движок шаблонов позволяет вам создавать модули для повышения удобства сопровождения.

Тем не менее, Compojure, похоже, не имеет полноценного движка шаблонов HTML в комплекте с ним. У него действительно есть хороший маленький HTML / XML предметно-ориентированный язык (DSL), но я думаю, что вы ищете, это скорее шаблонизатор первого класса, который можно использовать вместе с Compojure.

Enlive , кажется, вдохновленный Clojure шаблонный движок, который получает большинство хитов, но я уверен, что есть и другие. Учитывая интеграцию JVM с Clojure, вы, вероятно, также можете выбрать любой из шаблонизаторов Java-101 * 1012.

В зависимости от того, какой из них вы выберете, может быть несколько строк связующего кода, которые вы должны будете написать, чтобы ваши шаблоны загружались, отображались и передавались в ответы Compojure HTTP, но вы напишите это один раз и будете использовать везде. 1015 *

...