分享
 
 
 

FreeMarker vs. Velocity

王朝java/jsp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

1、概述

l Velocity是一个简单而且更加轻量级的工具,但是它没有达到FreeMarker能够做的许多任务,而且它的模板语言不是很强大

l 我们认为对于大多数应用程序,FreeMarker比Velocity工作更简单,因为:

Ø 使用Velocity,你需要寻找特定工具或各种工作环境来一次次的解决典型的模板创作任务,结果会浪费更多时间

Ø 工作环境经常意味着在Velocity模板中直接使用Java对象的方法,这违反了简单、无编程HTML设计的观念

Ø 或者将表示任务移到控制器代码中,这违反了MVC模式

l 使用FreeMarker,可以以out-of-the-box(如何翻译确切?)的方式实现Velocity所能做的

2、特性比较清单

下面是一个使用FreeMarker能够实现,而Velocity不能实现的不太全面的特性清单:

(1)数字和日期支持

l 可以对任何数字类型进行算术运算和比较,包括精度类型

l 可以比较和显示(格式化)日期/时间值

(2)国际化

l 根据各种内建和定制的数字格式,格式化本地敏感的数字

l 根据各种内建和定制的日期格式,格式化本地敏感和时区敏感的日期

l 标识(变量名)可以包含非英语字符,如重音字符、阿拉伯字符、中文字符等

(3)循环处理

l 可以跳出循环

l 可以在循环外访问循环体内的控制变量

l 可以测试是否达到最后一次循环

(4)模板级别的数组处理

l 可以使用类似[i]语法的索引方式访问数组元素

l 可以查询数组长度

(5)宏

l 宏可以有局部变量

l 可以递归调用宏,同样可以在模板的后面定义要调用的宏

l 调用宏时,可以按位置或名字的方式传递参数

l 宏参数可以有缺省值,使得在调用时忽略参数也有效

l 调用的宏可以有嵌套的体内容(<@myMacro>body</@myMacro>),能够在宏被调用时进行处理

l 宏是纯变量的,可以基于表达式来执行宏,或者作为参数传递给另一个宏

(6)命名空间

l 可以对变量使用多命名空间,这对创建宏库很重要,因为这可以避免应用程序中指定的变量和宏库中变量的名字冲突

(7)使用内建的函数/操作符维护Java无关的string、list和map

l 可以将字符串转换成大/小写、首字符大/小写,对HTML、XML或RTF进行转义处理,substring、split、查询字符串长度、find/replace子串等等

l 通过索引访问list元素,获得子list,合并list,查询list长度,对list排序

l 通过key变量访问map元素,检查map是否为空,获得key或值的list

(8)揭示模板中的错误

l 当访问一个未定义的变量,FreeMarker不会沉默;你可以配置FreeMarker来停止render模板显示错误信息,或者跳过错误部分;无论哪种,FreeMarker会记录问题(日志)

l 在写错指令名时,FreeMarker会抛出异常

(9)高级render控制

l 可以使用一组标记来封装模板的一块区域,以便在块区中所有要修改的地方应用HTML或XML转义(或其它使用FreeMarker表达式表示的转换)

l FreeMarker有转换器,它们是模板的一块区域,在render时,通过转换过滤;内建的转换器包括空白字符压缩、HTML和XML转义;你可以实现自己的转换器;当然转换器可以嵌套

l 可以使用flush指令显式的flush输出

l 可以使用stop指令停止render

(10)文字

l 除了通常的字符串、数字和布尔值文字,也可以在模板中定义list和map文字

l 支持所有的Java转义文字:\b、\t、\n、\f、\r、\”、\’、\\,也支持\xXXXX使用UNICODE指定字符

(11)高级空白字符移除

l FreeMarker坚持移除各行只包含不输出FreeMarker标记的空白字符

l 对于明显要整修掉不需要的空白字符的指令来说,空白字符是个大问题

(12)集成其它技术

l 可以在模板中使用JSP标记库

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

(13)强大的XML转换能力

l 在2.3版本中,FreeMarker具有强大的新XML转换能力,使得替代XSLT成为可能

l Velocity在这方面是无法真正竞争的,除非改进核心引擎,如支持宏库映射到名字空间,宏中支持局部变量

(14)高级模板元程序

l 可以捕获输出的任何部分到context变量中

l 可以解释任何context变量,如果它是一个模板定义

l 上述两者的结合使用

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有