Начало работы с CSS в Compojure? - PullRequest
9 голосов
/ 25 января 2010

Я нашел очень простую веб-страницу в Интернете, и теперь я хотел бы сделать очевидную вещь и добавить немного CSS, чтобы я мог создавать более хорошие страницы.

  1. Как включить jQuery, а также другие таблицы стилей?
  2. Как включить встроенный CSS, чтобы я мог добавить text-align: center , например, чтобы попробовать быстрые изменения?

Обычные jQuery включают в себя:


<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"/>

Базовый сервер Hello World без форматирования: (обновлен для включения исправления статической маршрутизации, чтобы другие работали быстрее)


(ns hello-world
  (:use compojure))

(defn index
  [request]
    (html
    [:h1 "Hello World"]
    [:p "This is ugly with CSS!"])
    )

(defn hello
  [request]
  (html ""
   [:title "A very long title"]
   [:div.comment
    [:h1 "Hello's Page"]
    [:p "This would look better with some CSS formatting!"]]
))

(defroutes greeter
  (GET "/" index)
  (GET "/h" hello)
  (GET "/*"
       (or (serve-file "/opt/compojure/www/public" (params :*)) ;; This is needed to find CSS and js files
       :next))
  (ANY "*"
       (page-not-found) ;;  404.html is in /opt/compojure/www/public/404.html
  ))


(run-server {:port 9090}
  "/*" (servlet greeter))

1 Ответ

12 голосов
/ 25 января 2010

Вы можете включить атрибуты стиля, чтобы назначить «встроенные стили CSS», используя синтаксис, такой как:

[:h1 {:style "background-color: black"} "Hello's Page"]

Вы также можете включить тег таблицы стилей и javascript, используя функции include-css и include-js.

(defn hello
  [request]
  (html ""
   [:html
     [:head
        [:title "A very long title"]
        (include-css "my css file")
        (include-js "http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js")]
     [:body
       [:div.comment
          [:h1 "Hello's Page"]
          [:p "This would look better with some CSS formatting!"]]]]))

Для того, чтобы обслуживать статические файлы, такие как файлы css и js, вам нужно немного изменить инструкцию маршрута и добавить что-то вроде:

   (GET "/*"
    (or (serve-file "PATH_TO_FILES" (params :*)) :next))

В противном случае ваш локальный файл CSS никогда не будет обработан.

...