Updating handlers with hiccupλ︎
Instead of including fiddly html code (and having to make sure you close tags), we will write our markup in Clojure syntax using hiccup.
Add dependenciesλ︎
Note:: Add hiccup dependenciesλ︎
Require hiccupλ︎
Note:: Add hiccup to your namespaceλ︎
Your core.clj file should look like this
(ns todo-list.core
(:require [ring.adapter.jetty :as jetty]
[ring.middleware.reload :refer [wrap-reload]]
[compojure.core :refer [defroutes GET]]
[compojure.route :refer [not-found]]
[ring.handler.dump :refer [handle-dump]]
[hiccup.core :refer :all]
[hiccup.page :refer :all]))
Update the welcome handlerλ︎
Note:: Change the
welcome
handler to use hiccup rather than html codeλ︎
(defn welcome
"A ring handler to respond with a simple welcome message"
[request]
(html [:h1 "Hello, Clojure World"]
[:p "Welcome to your first Clojure app, I now update automatically"]))
The html
function create html code based on the keywords used. However, the html function does not create a full html web page.
Update the goodbye handlerλ︎
Note:: Change the
goodbye
handler to use hiccup rather than htmlλ︎
(defn goodbye
"A song to wish you goodbye"
[request]
(html5 {:lang "en"}
[:head (include-js "myscript.js") (include-css "mystyle.css")]
[:body
[:div [:h1 {:class "info"} "Walking back to happiness"]]
[:div [:p "Walking back to happiness with you"]]
[:div [:p "Said, Farewell to loneliness I knew"]]
[:div [:p "Laid aside foolish pride"]]
[:div [:p "Learnt the truth from tears I cried"]]]))
Using the html5
function a complete html page is created, with a header and body section.
See the hiccup.page API documentation.