Selmerを使ってみる
Hiccupにどうしても慣れることができなかったので、Djangoにインスパイアされたと言われるSelmerがどんなものか軽く動かしてみることにした。
project.cljの:dependenciesに以下を追加
[selmer "1.0.7"]
resource/templates配下に
- layout.html
- user/login.html
を用意
<!-- resource/templates/layout.html --> <html lang="ja"> <head> <title>title</title> </head> <body> {% block body %}{% endblock %} </body> </html>
<!-- resource/templates/user/login.html --> {% extends "layout.html" %} {% block body %} <form action="/login" method="post"> <div><input type="text" name="email" value="{{email}}"/></div> <div><input type="password" name="password" value="{{password}}"/></div> <div><input type="submit" value="submit"/></div> </form> {% endblock %}
画面表示用の関数でrender-file を使ってテンプレートの呼び出しとコンテキストの設定
; core.clj (ns selmer-example.core (:require ...省略...) (:use [selmer.parser :refer [render-file set-resource-path!]])) ; project.cljの:resource-paths に resourcesが指定されている必要がある (set-resource-path! (clojure.java.io/resource "templates")) (defn login-view [{email :email password :password :as params}] (println params) (render-file "user/login.html" {:email email :password password})) ...省略....
すんなり動いてくれた。これなら十分実用できそうな気がする。