相比较FreeMarker而言,Velocity更加简单、轻量级,但它的功能却没有FreeMarker那么强大。依据评测的结论, freemarker 稍快一些。差别在毫秒级别,对用户而言可以忽略不计,若超大流量,考虑负载时,较倾向后者。
velocity 出现得较早些,也有更多的受众,因此在考虑到人员配给上,略占优势。但是模板技术上手都很快的,所以无所谓。
对于大部分的应用来说,使用 FreeMarker 比 Velocity 更简单,因为 Velocity 还必须编写一些自定义的toolbox类以及一遍遍重复的编写一些比较通用的模版代码,因此也就丧失了刚开始开发时更多的宝贵时间。另外使用工具类和变通的方法在模版引擎中似乎不是一个非常有效的做法。同时,Velocity 的做法使得在Velocity的模版中大量的跟 Java 对象进行交互,这违反了简单的原则,尽管你也可以将代码转入控制器中实现。当然,如果你像使用 Velocity 一样来使用 FreeMarker ,那么 FreeMarker 也可以跟 Velocity 一样简单。
Velocity 一个优于FreeMarker的地方在于它有很广泛的第三方支持以及一个非常庞大的用户社区,你可以通过这个社区获得到很多的帮助,相反的FreeMarker在这方面要差很多。当然,也有越来越多的第三方软件开始在支持 FreeMarker 。
下面是一些 FreeMarker 能做到的,而 Velocity 做不到的功能列表(且看着):
您可以执行运算和比较,对任意数量的类型,包括任意精度类型,而不仅仅是整数。您可以比较和显示(格式化)日期/时间值。
您可以格式数字区域,各种各样的内置和自定义数字格式模式。您可以格式日期地区和时区,各种各样的内置和定制的日期格式模式。标识符(变量名)可以包含非英语字母一样重音字母,阿拉伯字母,汉字等
您可以退出循环您可以访问控制变量外循环机构的内部循环您可以得知当前是否到了循环的结束位置
您可以使用[i]的语法来访问数组元素,包括原始的和非原始的指数可以获取到数组的长度
宏调用可以通过位置或名称进行参数传递宏的参数可以设定默认值,在调用宏时如果没有指定该参数,则使用默认值代替通过 <@myMacro>body</@myMacro> 可以支持宏的嵌套可以通过文本表达的“宏的名称”来直接调用某个宏宏允许先使用再定义宏可以定义局部变量(新版本的Velocity也通过#local指令来实现该功能,尽管官方的文档还没有进行介绍)
您可以使用多个名称空间的变数。当您建立“宏库”时是非常有用的 ,因为可以防止名称冲突与申请特定变量或与其他宏变量的库。
- 内置与 Java 语言无关的字符串、列表、Map 的操作方法
当访问一个不存在的变量时,FreeMarker 在执行该模版时会报错,通过配置,你可以指定 FreeMarker 在碰到此类错误时是停止执行,还是忽略该错误,同时 FreeMarker 会在日志中记录此问题;如果您输入错误指令的名称,FreeMarker将抛出一个异常。
支持Java的特殊字符处理,例如\b, \t, \n, \f, \r, \", \', \\,以及UNICODE的\xXXXX 除了通常的字符串,数字,和布尔常量您可以定义列表和地图文字以及内部模板
FreeMarker 将删除一些多余的空格、跳格、换行等字符,从而消除一些令人厌烦的明显多余的空格 FreeMarker 也提供指令来删除多于的空格
提供JSP 标签库以便在 JSP 中嵌入 FreeMarker 模版可以直接跟 Python 对象一起工作
您可以捕捉到输出的任意部分范本背景变量您可以任意解释的范围变量,就好像它是一个模板定义
注:引自http://www.zzbaike.com/wiki/Velocity%E4%B8%8EFreeMarker
分享到:
相关推荐
Velocity 和 FreeMarker区别 对于大部分的应用来说,使用 FreeMarker 比 Velocity 更简单,因为 Velocity 还必须编写一些自定义的
模板:velocity和freemarker的比较模板:velocity和freemarker的比较
NULL 博文链接:https://jetway.iteye.com/blog/569436
NULL 博文链接:https://dada-fangfang.iteye.com/blog/1622934
NULL 博文链接:https://longzhun.iteye.com/blog/1055208
Freemarker和Velocity的eclipse插件,要求eclipse3.0以上版本
jsp、freemarker、velocity简介和对比。---如果你已经开发Java Web应用程序一段时间,那么对于 JVM 的 PermGen 问题可能并不陌生。由于 FreeMarker 模板不编译成类,它们不占用 PermGen 空间,并不需要一个新的类...
大型商城网站源码springmvc+freemarker+velocity+ibatis,最新最前沿的技术,特别适合二次开发
Struts2集成FreeMarker和Velocity,写成了工具类,快速实现页面静态化,以后直接调用即可,无需修改任何源代码,改压缩文件包括 1、工具类; 2、源码(含jar包); 3、mysql数据库可执行文件; 4、struts2集成...
应用实例,可运行maven+springmvc+mybaits+freemarker+velocity。
velocity使用文档,系统了解velocity模板技术,系统讲述velocity的使用,可以结合freemarker的思想学习这种视图模板技术
而目前开源的组件中,Itext的确是一个First Choice,如果各位单纯是做把图片转成PDF或者自己写了Velocity或者FreeMarker模板生成了HTML是非常推荐直接用Itext来进行的。而如果,大家像我这样已经有前人写好了HTML...
SpringMVC模板, SpringMVC与Velocity,Freemarker
它提供了对ORM工具(Hibernate,JDO,TopLink,apacheOJB,iBatis,JPA)、视图(JSP,JSTL,Title,Velocity,FreeMarker,XSLT,PDF/Excel文档视图、JasperReports报表视图)、Web框架(JSF、Struts、Tapestry、WebWork)其他技术...
Struts2+velocity 整合时所用的jar包 资源目录如下 commons-collections-3.1 ...freemarker-2.3.16 ognl-3.0.1 oro-2.0.8 struts2-core-2.2.3.1 velocity-1.7 velocity-tools-1.4 xwork-core-2.1.6
支持HTML,JSP,Velocity,Freemarker等视图,零技术门云 灵活的权限控制,可控制到页面或按钮,满足绝大部分的权限需求(如需控制到按钮等级,需使用Shiro标签,控制按钮的显示或隐藏) 页面互动使用Vue2.x,极大的...
velocity-1.6.3_Src_jar.zip 模版静态化的好工具,和freemarker一样的强大!
什么是FreeMarker? ................................................................................................. 7 我们应该阅读什么内容? .............................................................
Freemaker是一个强大的模板引擎,相比velocity而言,其强大的过程调用、递归和闭包回调功能让freemaker可以完成几乎所有我们所想的功能。从个人看法而言,freemaker完全有能力作为MDA的代码辅助生成工具。 <br>