Clojure:解决Selmer与AngularJS的 标签混淆问题
Selmer是Clojure的一个模板类库,下面是它的一个DEMO模板:
<ul> {% for item in items %} <li>{{item}}</li> {% endfor %} </ul>
很明显,它的{{}}的写法很容易和AngularJS混淆起来。为了解决这个问题,我们可以在它的生成模板语句中更改它的tag,通过自定义:tag-open和:tag-close即可。示例代码如下:
1 (ns fycoins.views.layout 2 (:require [selmer.parser :as parser] 3 )) 4 5 (def template-folder "fycoins/views/templates/") 6 7 (defn render [template & [params]] 8 (parser/render-file (str template-folder template) 9 params 10 {:tag-open \[ 11 :tag-close \]}))
这样,我们的模板文件就可以写成这样:
1 <!DOCTYPE html> 2 <html> 3 <head lang="en"> 4 <meta charset="UTF-8"> 5 <title></title> 6 <link rel="stylesheet" href="[{context}]/css/screen.css" /> 7 </head> 8 <body> 9 Home 10 </body> 11 </html>