Freemarker与Velocity
1Freemarker
字符串长度web1.1Freemarker简介
FreeMarker是一个用Java语言编写的模板引擎,它基于模板来生成文本输出,仅是利用模板加上数据生成文本页面,即是由Java程序准备要显示的数据,由FreeMarker生成页面,通过模板显示准备的数据,并可以在模板中使用JSP标签。
FreeMarker与Web容器无关,即在web运行时,它并不知道Servlet或Http;FreeMarker同样也可以用于非Web应用环境。FreeMarker不仅可以用作表现层的实现技术,用来生成HTML Web页面,而且还可以用于生成XML,JSP或Java等。Freemarker是免费的。
1.2Freemarker特性
具有一般通用的功能:
能够生成各种任意格式的文本,如HTML,XML,RTF(多文本格式),Java源代码等等;
易于嵌入到产品中,是轻量级的,不需要servlet环境,不依赖javax.servlet.classes;
可插入的模板读取器(插件式模板载入器),即可以从任意的源码读取任意的模板,如本地本件、数据库等等;
可以做任意你想生成的文本,存储为本地文件,可以用来发送Email或返回WEB浏览器;
强大的模板语言:
完整的指令,如include,if/elseif/else,loop;
在模板中创建和改变变量;
几乎在任何地方都可以是使用复杂表达式来指定值;
支持宏指令;
字符串操作,如concateration,sub-string,uppercase,capitalize,escaping,等等;
十进制数学运算;
读取数组和相关的数组元素;
可以自己添加特殊的计算方法;
命名的宏有助于建立和维护可重用的宏库,或者将一个大工程分成模块,而不必担心名字冲突;
命名的宏,可以具有位置参数和嵌套内容;
通用的数据模型:
FreeMarker不是直接反射到Java对象,Java对象通过插件式对象封装,以变量方式在模板中显示;
可以使用抽象(接口)方式表示对象(JavaBean、XML文档、SQL查询结果集等),使模板开发者直接使用方法,不受细节的打扰;
为web准备:
在模板语言中内建处理典型web相关任务(如HTML转义)的结构;
能够集成到Model2 web应用框架中作为JSP的替代;
支持JSP标记库;
为MVC模式设计,即分离可视化设计和应用程序逻辑,分离页面设计员和程序员;
智能的国际化和本地化:
字符集智能化(内部使用UNICODE);
数字格式本地化敏感;
日期和时间格式本地化敏感;
非US字符集可以用作标识(如变量名);
多种不同语言的相同模板;
强大的XML处理能力:
<#recurse>和<#visit>指令(2.3版本)用于递归遍历XML树;
在模板中清楚和直接的访问XML对象模型;
2Velocity
2.1Velocity简介
Velocity是一个基于JAVA的模板引擎(template engine:模板引擎的作用就是取得数据并加以处理,最后显示出数据)。它允许任何人仅仅简单的使用模板语言来引用由java代码定义的对象。
Velocity主要应用于Web应用的开发;作为模板产生SQL,XML或代码等;作为其他系统的集成组件使用。
3两者的比较
Velocity相比较FreeMarker而言更加简单,轻量级,但它的功能却没有FreeMarker那么强大。依据评测的结论,freemarker稍快一些,差别在毫秒级别,对用户而言可以忽略不计,若超大流量,考虑负载时,较倾向后者freemarker。
Velocity出现得较早些,也有更多的受众,因此在考虑到人员配给上,略占优势。
对于大部分的应用来说,使用FreeMarker比Velocity更简单,因为Velocity还必须编写一些自定义的toolbox类以及一遍遍重复的编写一些比较通用的模板代码,会浪费一些时间。另外Velocity使用工具类和变通的方法在模板引擎中似乎不是有一个非常有效的做法。同时,Velocity的做法使得在Velocity的模板中大量的跟Java对象进行交互,违反了简单的原则。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论