相比较 FreeMarker 而言,Velocity 更加简单、轻量级,但它的功能却没有 FreeMarker 那么强大。
对于大部分的应用来说,使用 FreeMarker 比 Velocity 更简单,因为 Velocity 还必须编写一些自定义的toolbox类以及一遍遍重复的编写一些比较通用的模版代码,因此也就丧失了刚开始开发时更多的宝贵时间。另外使用工具类和变通的方法在模版引擎中似乎不是一个非常有效的做法。同时,Velocity 的做法使得在Velocity的模版中大量的跟 Java 对象进行交互,这违反了简单的原则,尽管你也可以将代码转入控制器中实现。当然,如果你像使用 Velocity 一样来使用 FreeMarker ,那么 FreeMarker 也可以跟 Velocity 一样简单。
Velocity 一个优于 FreeMarker 的地方在于它有很广泛的第三方支持以及一个非常庞大的用户社区,你可以通过这个社区获得到很多的帮助,相反的 FreeMarker 在这方面要差很多。当然,也有越来越多的第三方软件开始在支持 FreeMarker 。
下面是一些 FreeMarker 能做到的,而 Velocity 做不到的功能列表(且看着):
1. 日期和数字的支持
您可以执行运算和比较,对任意数量的类型,包括任意精度类型,而不仅仅是整数。
您可以比较和显示(格式化)日期/时间值。
2. 国际化
您可以格式数字区域,各种各样的内置和自定义数字格式模式。
您可以格式日期地区和时区,各种各样的内置和定制的日期格式模式。
标识符(变量名)可以包含非英语字母一样重音字母,阿拉伯字母,汉字等
3. 循环处理
您可以退出循环
您可以访问控制变量外循环机构的内部循环
您可以得知当前是否到了循环的结束位置
4. 模版级别的数组处理
您可以使用[i]的语法来访问数组元素,包括原始的和非原始的指数
可以获取到数组的长度
5. 宏定义
对于大部分的应用来说,使用 FreeMarker 比 Velocity 更简单,因为 Velocity 还必须编写一些自定义的toolbox类以及一遍遍重复的编写一些比较通用的模版代码,因此也就丧失了刚开始开发时更多的宝贵时间。另外使用工具类和变通的方法在模版引擎中似乎不是一个非常有效的做法。同时,Velocity 的做法使得在Velocity的模版中大量的跟 Java 对象进行交互,这违反了简单的原则,尽管你也可以将代码转入控制器中实现。当然,如果你像使用 Velocity 一样来使用 FreeMarker ,那么 FreeMarker 也可以跟 Velocity 一样简单。
Velocity 一个优于 FreeMarker 的地方在于它有很广泛的第三方支持以及一个非常庞大的用户社区,你可以通过这个社区获得到很多的帮助,相反的 FreeMarker 在这方面要差很多。当然,也有越来越多的第三方软件开始在支持 FreeMarker 。
下面是一些 FreeMarker 能做到的,而 Velocity 做不到的功能列表(且看着):
1. 日期和数字的支持
您可以执行运算和比较,对任意数量的类型,包括任意精度类型,而不仅仅是整数。
您可以比较和显示(格式化)日期/时间值。
2. 国际化
您可以格式数字区域,各种各样的内置和自定义数字格式模式。
您可以格式日期地区和时区,各种各样的内置和定制的日期格式模式。
标识符(变量名)可以包含非英语字母一样重音字母,阿拉伯字母,汉字等
3. 循环处理
您可以退出循环
您可以访问控制变量外循环机构的内部循环
您可以得知当前是否到了循环的结束位置
4. 模版级别的数组处理
您可以使用[i]的语法来访问数组元素,包括原始的和非原始的指数
可以获取到数组的长度
5. 宏定义