node.js 模板引ejs。 搜了一把推薦用ejs的最多。 速度比對:http://www.cnblogs.com/fengmk2/archive/2011/04/28/2031971.html ejs速度不是最快的,推薦最多大概是因為其簡單的語法結構。主要通過<% %><%=%>來嵌套代碼。比如符合閱讀邏輯,同時也省去不少學習語法的成本。 另有一些自定義的方法:如link_to(name, url),img_tag(url)等。 還可以支持json。 =========== ejs的特性: 1、緩存功能,能夠緩存已經解析好的html模版; 2、<% code %>用于執(zhí)行其中javascript代碼; 3、<%= code %>會對code進行html轉義; 4、<%- code %>將不會進行轉義; 5、支持自定義標簽,比如'<%'可以使用'{{','%>'用'}}'代替; 6、提供一些輔助函數(shù),用于模版中使用 7、利用<%- include filename %>加載其他頁面模版; 使用示例 1、ejs.compile(str, options); 將返回內部解析好的Function函數(shù) 2、ejs.render(str, options); 返回經過解析的字符串 其中options的一些參數(shù)為: 1、cache:是否緩存解析后的模版,需要filename作為key; 2、filename:模版文件名; 3、scope:complile后的Function執(zhí)行所在的上下文環(huán)境; 4、debug:標識是否是debeg狀態(tài),debug為true則會輸出生成的Function內容; 5、compileDebug:標識是否是編譯debug,為true則會生成解析過程中的跟蹤信息,用于調試; 6、client,標識是否用于瀏覽器客戶端運行,為true則返回解析后的可以單獨運行的Function函數(shù); 7、open,代碼開頭標記,默認為'<%'; 8、close,代碼結束標記,默認為'%>'; 9、其他的一些用于解析模版時提供的變量。 在express中使用時,options參數(shù)將由response.render進行傳入,其中包含了一些express中的設置,以及用戶提供的變量值。 此外ejs還提供了一些輔助函數(shù),用于代替使用javascript代碼,使得更加方便的操縱數(shù)據(jù)。 1、first,返回數(shù)組的第一個元素; 2、last,返回數(shù)組的最后一個元素; 3、capitalize,返回首字母大寫的字符串; 4、downcase,返回字符串的小寫; 5、upcase,返回字符串的大寫; 6、sort,排序(Object.create(obj).sort()?); 7、sort_by:'prop',按照指定的prop屬性進行升序排序; 8、size,返回長度,即length屬性,不一定非是數(shù)組才行; 9、plus:n,加上n,將轉化為Number進行運算; 10、minus:n,減去n,將轉化為Number進行運算; 11、times:n,乘以n,將轉化為Number進行運算; 12、divided_by:n,除以n,將轉化為Number進行運算; 13、join:'val',將數(shù)組用'val'最為分隔符,進行合并成一個字符串; 14、truncate:n,截取前n個字符,超過長度時,將返回一個副本 15、truncate_words:n,取得字符串中的前n個word,word以空格進行分割; 16、replace:pattern,substitution,字符串替換,substitution不提供將刪除匹配的子串; 17、prepend:val,如果操作數(shù)為數(shù)組,則進行合并;為字符串則添加val在前面; 18、append:val,如果操作數(shù)為數(shù)組,則進行合并;為字符串則添加val在后面; 19、map:'prop',返回對象數(shù)組中屬性為prop的值組成的數(shù)組; 20、reverse,翻轉數(shù)組或字符串; 21、get:'prop',取得屬性為'prop'的值; 22、json,轉化為json格式字符串 ===================== 不過,我感覺js代碼和html代碼混在一塊的情況并不是特別友好。 模板示例:
關于ejs的使用可參照: http://node-js./post/2012-07-03/40029704518 http://blog.csdn.net/lisownjay/article/details/16952723 http://www./board/4fddc4f0b28ed7d857001674#/post/4fddc603b28ed7d85700168a http:///index.html |
|