国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
FreeMarker vs. Velocity
author:http://blog.csdn.net/chenyun2000/archive/2004/10/25/150612.aspx
1
、概述

l         Velocity是一個(gè)簡單而且更加輕量級的工具,但是它沒有達(dá)到FreeMarker能夠做的許多任務(wù),而且它的模板語言不是很強(qiáng)大

l         我們認(rèn)為對于大多數(shù)應(yīng)用程序,FreeMarkerVelocity工作更簡單,因?yàn)椋?/span>

Ø         使用Velocity,你需要尋找特定工具或各種工作環(huán)境來一次次的解決典型的模板創(chuàng)作任務(wù),結(jié)果會浪費(fèi)更多時(shí)間

Ø         工作環(huán)境經(jīng)常意味著在Velocity模板中直接使用Java對象的方法,這違反了簡單、無編程HTML設(shè)計(jì)的觀念

Ø         或者將表示任務(wù)移到控制器代碼中,這違反了MVC模式

l         使用FreeMarker,可以以out-of-the-box(如何翻譯確切?)的方式實(shí)現(xiàn)Velocity所能做的

 

2、特性比較清單

下面是一個(gè)使用FreeMarker能夠?qū)崿F(xiàn),而Velocity不能實(shí)現(xiàn)的不太全面的特性清單:

1)數(shù)字和日期支持

l         可以對任何數(shù)字類型進(jìn)行算術(shù)運(yùn)算和比較,包括精度類型

l         可以比較和顯示(格式化)日期/時(shí)間值

2)國際化

l         根據(jù)各種內(nèi)建和定制的數(shù)字格式,格式化本地敏感的數(shù)字

l         根據(jù)各種內(nèi)建和定制的日期格式,格式化本地敏感和時(shí)區(qū)敏感的日期

l         標(biāo)識(變量名)可以包含非英語字符,如重音字符、阿拉伯字符、中文字符等

3)循環(huán)處理

l         可以跳出循環(huán)

l         可以在循環(huán)外訪問循環(huán)體內(nèi)的控制變量

l         可以測試是否達(dá)到最后一次循環(huán)

4)模板級別的數(shù)組處理

l         可以使用類似[i]語法的索引方式訪問數(shù)組元素

l         可以查詢數(shù)組長度

5)宏

l         宏可以有局部變量

l         可以遞歸調(diào)用宏,同樣可以在模板的后面定義要調(diào)用的宏

l         調(diào)用宏時(shí),可以按位置或名字的方式傳遞參數(shù)

l         宏參數(shù)可以有缺省值,使得在調(diào)用時(shí)忽略參數(shù)也有效

l         調(diào)用的宏可以有嵌套的體內(nèi)容(<@myMacro>body</@myMacro>),能夠在宏被調(diào)用時(shí)進(jìn)行處理

l         宏是純變量的,可以基于表達(dá)式來執(zhí)行宏,或者作為參數(shù)傳遞給另一個(gè)宏

6)命名空間

l         可以對變量使用多命名空間,這對創(chuàng)建宏庫很重要,因?yàn)檫@可以避免應(yīng)用程序中指定的變量和宏庫中變量的名字沖突

7)使用內(nèi)建的函數(shù)/操作符維護(hù)Java無關(guān)的stringlistmap

l         可以將字符串轉(zhuǎn)換成大/小寫、首字符大/小寫,對HTML、XMLRTF進(jìn)行轉(zhuǎn)義處理,substring、split、查詢字符串長度、find/replace子串等等

l         通過索引訪問list元素,獲得子list,合并list,查詢list長度,對list排序

l         通過key變量訪問map元素,檢查map是否為空,獲得key或值的list

8)揭示模板中的錯(cuò)誤

l         當(dāng)訪問一個(gè)未定義的變量,FreeMarker不會沉默;你可以配置FreeMarker來停止render模板顯示錯(cuò)誤信息,或者跳過錯(cuò)誤部分;無論哪種,FreeMarker會記錄問題(日志)

l         在寫錯(cuò)指令名時(shí),FreeMarker會拋出異常

9)高級render控制

l         可以使用一組標(biāo)記來封裝模板的一塊區(qū)域,以便在塊區(qū)中所有要修改的地方應(yīng)用HTMLXML轉(zhuǎn)義(或其它使用FreeMarker表達(dá)式表示的轉(zhuǎn)換)

l         FreeMarker有轉(zhuǎn)換器,它們是模板的一塊區(qū)域,在render時(shí),通過轉(zhuǎn)換過濾;內(nèi)建的轉(zhuǎn)換器包括空白字符壓縮、HTMLXML轉(zhuǎn)義;你可以實(shí)現(xiàn)自己的轉(zhuǎn)換器;當(dāng)然轉(zhuǎn)換器可以嵌套

l         可以使用flush指令顯式的flush輸出

l         可以使用stop指令停止render

10)文字

l         除了通常的字符串、數(shù)字和布爾值文字,也可以在模板中定義listmap文字

l         支持所有的Java轉(zhuǎn)義文字:\b、\t\n、\f、\r\”、\’\\,也支持\xXXXX使用UNICODE指定字符

11)高級空白字符移除

l         FreeMarker堅(jiān)持移除各行只包含不輸出FreeMarker標(biāo)記的空白字符

l         對于明顯要整修掉不需要的空白字符的指令來說,空白字符是個(gè)大問題

12)集成其它技術(shù)

l         可以在模板中使用JSP標(biāo)記庫

l         可以直接在Python工程中使用

13)強(qiáng)大的XML轉(zhuǎn)換能力

l         2.3版本中,FreeMarker具有強(qiáng)大的新XML轉(zhuǎn)換能力,使得替代XSLT成為可能

l         Velocity在這方面是無法真正競爭的,除非改進(jìn)核心引擎,如支持宏庫映射到名字空間,宏中支持局部變量

14)高級模板元程序

l         可以捕獲輸出的任何部分到context變量中

l         可以解釋任何context變量,如果它是一個(gè)模板定義

l         上述兩者的結(jié)合使用

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
FreeMarker (三)
XML中的轉(zhuǎn)義字符
XML換行轉(zhuǎn)義符
Android常見xml轉(zhuǎn)義字符小結(jié)
Velocity(3)——字面值和轉(zhuǎn)義
Struts2與Velocity模板
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服