模版引擎之前在介紹mustache時已經提到了。doT、mustache各有優勢吧,如果用于JS環境,doT的性能更勝一籌,并且套語句更方便些。現在公司的mobile頁面已經被我替換成doT了。
doT source: https://github.com/olado/doT
Docs: http://olado.github.com/doT/
doT上手比較容易,但之前熟悉了mustache,改用doT時有點不習慣,但用兩次就好了。
下載doT.js(里面有個doU.js不要用,doU.js是為了測試遺留問題的)。舉個簡單的使用例子:
HTML部分:
- <script id="J_tmpl" type="text/template">
- {{ if(it.success){ }}
- <h2>results:</h2>
- <ul>
- {{ for (var i = 0, l = it.data.length; i < l; i++) { }}
- <li>
- <h5>{{=it.data[i].title}}</h5>
- <p>{{!it.data[i].message}}</p>
- </li>
- {{ } }}
- <ul>
- {{ }else{ }}
- <h2>暫無數據</h2>
- {{ } }}
- </script>
JS部分:
- <script>
- var obj = {
- success: true,
- data:[
- {title:'item1',message:11},
- {title:'item1',message:22}
- ]
- }
- var tmpl = document.getElementById('J_tmpl').innerHTML;
- var doTtmpl = doT.template(tmpl);
- console.log(doTtmpl(obj ));
- </script>
看了例子,就應該會使用了。
{{=it.xx}} 取obj.xx的值
{{ }} 里面放if els / for 等表達式
{{!it.xx}} 取把obj.xx轉義后的值
這些基本夠用了,還有復雜的應用,可以看doT主頁內的examples、docs。
并且,可以很容易把doT寫成jquery插件:
- $.extend({
- tmpl: function(template, view){
- return doT.template(template).apply(null,[view]);
- }
- });