週末有點時間,找了些代碼來看。最近在學 clojure,因而看了個 clojure 的項目,叫 enlive 的項目(https://github.com/cgrand/enlive)。這是一個 clojure 寫的 HTML Template Engine。其特點是能夠經過相似 jquery 選擇器的方法選取模板中的元素,而後修改元素的值、屬性、css 類和文本內容等。這種渲染模板的方式,至少對我來講是比較新的,之前見過的 Template Engine,大概就這麼兩種:javascript
if..else
,foreach
之類的邏輯操做,典型表明是 Handlebars 和 ejs 等。有的甚至直接搞成跟 PHP 同樣,能夠在 HTML 模板裏嵌入邏輯代碼,如 https://github.com/henix/slt2。示例:<h1>Comments</h1> <div id="comments"> {{#each comments}} <h2><a href="/posts/{{../permalink}}#{{id}}">{{title}}</a></h2> <div>{{body}}</div> {{/each}} </div>
doctype 5 html(lang="en") head title= pageTitle script(type='text/javascript'). if (foo) { bar(1 + 5) } body h1 Jade - node template engine #container.col if youAreUsingJade p You are amazing else p Get on it! p. Jade is a terse and simple templating language with a strong focus on performance and powerful features.
上面兩種 Template Engine,第一種比較適合 HTML、CSS 的設計與後端邏輯分開,切頁面的時候先不用管邏輯,第二種可能比較時候後端開發的時候一鼓作氣,有種所想即所得的感受。css
而相似 enlive 的 Template Engine 感受比較少見,但這種方式可能更適合前端設計與後端邏輯分開的合做方式。前端設計的時候甚至都不用考慮最後會用數組來填值,因此要寫個 foreach
,要不要 if..else
來作個判斷,模板裏甚至均可以直接填上 mock 的值,反正最後渲染頁面的時候這些都會被再處理。html
我比較喜歡這種方式,打算有時間的時候寫一個相似的給 Lua 語言來用。前端