HandleBars

優秀博客:http://www.cnblogs.com/iyangyuan/archive/2013/12/12/3471227.htmlhtml

官網:http://handlebarsjs.com/xss

 

 

注意點:函數

支持嵌套循環:this

this指當前上下文編碼

循環中的索引使用:@index (從0開始的)翻譯

{{addOne @index}}
        //註冊一個Handlebars Helper,用來將索引+1,由於默認是從0開始的
        Handlebars.registerHelper("addOne",function(index,options){
           return parseInt(index)+1;
        });

擴展方法:

         Handlebars.registerHelper用來定義Helper,它有兩個參數,第一個參數是Helper名稱,第二個參數是一個回調函數,用來執行核心業務邏輯。回調函數能夠有至少1個參數,最後一個參數是固定的,就叫options,若是加了該參數,就說明這個Helper是一個Block,塊級別的Helper,有必定的語法結構,調用的時候加#號,就像if那樣。orm

         關於options的使用,小菜所瞭解的就是這種用法,return options.fn(this);表示知足條件繼續執行,也就是執行{{#compare }}和{{else}}之間的代碼;return options.inverse(this);表示不知足條件,也就是執行{{else}}和{{/compare}}之間的代碼。htm

 

如:blog

//註冊一個比較大小的Helper,判斷v1是否大於v2
78         Handlebars.registerHelper("compare",function(v1,v2,options){
79           if(v1>v2){
80             //知足添加繼續執行
81             return options.fn(this);
82           }else{
83             //不知足條件執行{{else}}部分
84             return options.inverse(this);
85           }
86         });
塊級調用: {{#compare age 20}} 。。。。 {{else}} 。。。 {{/compare}}




     //註冊一個翻譯用的Helper,0翻譯成男,1翻譯成女
 90         Handlebars.registerHelper("transformat",function(value){
 91           if(value==0){
 92             return "男";
 93           }else if(value==1){
 94             return "女";
 95           }
 96         });
帶options參數的Helper是塊級別的,而不帶的,至關於行內級別的Helper:這樣調用{{transformat sex}}

Html編碼:

    經過{{}}取出來的內容,都會通過編碼,也就是說,若是取出的內容中包含html標籤,會被轉碼成純文本,不會被當成html解析,實際上就是作了相似這樣的操做:把<用&lt;替代。索引

     這樣作是很好的,既能夠顯示html代碼,又能夠避免xss注入。這個功能在作代碼展現的時候是很是有用的。

     可是有時候咱們可能須要解析html,不要轉碼,很簡單,把{{}}換成{{{}}}就能夠啦。

相關文章
相關標籤/搜索