`
kangsoft
  • 浏览: 71789 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Velocity与FreeMarker

    博客分类:
  • Java
阅读更多

相比较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 对象一起工作

  • 更强大的XML转换功能
  • 先进的模板元程序

您可以捕捉到输出的任意部分范本背景变量您可以任意解释的范围变量,就好像它是一个模板定义

 

注:引自http://www.zzbaike.com/wiki/Velocity%E4%B8%8EFreeMarker

分享到:
评论

相关推荐

    Velocity 和 FreeMarker区别

    ### Velocity与FreeMarker的区别 在IT领域特别是Java开发中,模板引擎是不可或缺的一部分,它们用于将数据模型转换为HTML、PDF、Word文档等格式。在众多模板引擎中,Velocity和FreeMarker是两种非常受欢迎的选择。...

    模板:velocity和freemarker的比较

    Velocity和Freemarker模板技术比较 模板技术在现代软件开发中扮演着重要角色,而在目前最流行的两种模板技术中, Velocity 和 Freemarker 独占鳌头。在 WebWork2 中,我们可以随意选择使用 Freemarker 或 Velocity ...

    velocity和freemarker的比较

    标题“velocity和freemarker的比较”涉及到的是两个在Java Web开发中常用的模板引擎——Velocity和FreeMarker。它们都是用于将静态模板与动态数据结合,生成HTML或其他类型的文本输出,常用于MVC(模型-视图-控制器...

    当前流行的模板引擎效率分析(velocity,freeMarker,Smarty4j,httl)

    它与 Velocity 相比,FreeMarker更注重模板语言的灵活性和表达能力。FreeMarker的性能通常较好,因为它在编译模板时生成的是Java字节码,这使得执行速度更快。但同样,模板过于复杂可能会影响性能。 3. Smarty4j: ...

    jsp、freemarker、velocity简介和对比

    - 与Freemarker相比,Velocity的功能相对有限。 - 在处理复杂数据结构时不如Freemarker灵活。 #### 对比分析 - **性能与资源消耗**:Freemarker不编译成类,避免了PermGen空间消耗的问题,而JSP和Velocity可能会...

    velocity freemarke 模版 静态化 实现

    1. **Velocity与FreeMarker介绍** - **Velocity** 是Apache软件基金会的一个开源项目,它提供了简单易用的API,用于生成HTML、XML等格式的文本。Velocity模板语言(VTL)使得开发者能够专注于内容,而无需关心页面...

    velocity document

    **二、Velocity与Freemarker比较** 虽然Velocity和Freemarker都是视图模板引擎,但它们有各自的特性和优缺点: 1. **语法简洁性**:Freemarker的语法可能更为简洁,如其使用`&lt;#if&gt;`、`&lt;#foreach&gt;`等,而Velocity则...

    freemarker&velocity的使用

    Velocity是Apache软件基金会的一个项目,它的设计理念与Freemarker类似,但语法略有不同。Velocity的主要特性包括: 1. **引用和指令**:Velocity使用`${variable}`引用变量,而`#set`、`#if`、`#foreach`等指令...

    Velocity介紹

    **Velocity与Freemarker、Thymeleaf比较** Velocity、Freemarker和Thymeleaf都是Java领域的模板引擎,它们各有特点。Freemarker语法更为复杂,但功能更强大;Thymeleaf强调的是XML友好的语法,更适合静态页面的生成...

    velocity模板引擎

    Velocity与Freemarker、JSTL并称为Java Web开发中的三大标签技术。Velocity是一种基于Java的模板引擎,它允许Web开发者通过简单的模板语法来生成动态HTML网页、XML文档等。Velocity的核心优势在于其简洁易懂的语法...

    Freemarker学习归纳

    7. **Freemarker与其它模板引擎对比** - **JSP**:JSP是嵌入Java代码的模板,而Freemarker更强调分离关注点。 - **Thymeleaf**:Thymeleaf在静态HTML上添加属性,而Freemarker基于纯文本模板。 - **Velocity**:...

    Freemarker和Velocity的eclipse插件

    总的来说,Freemarker和Velocity的Eclipse插件对于Java Web开发者来说是必不可少的工具,它们将模板引擎的强大功能与Eclipse的优秀开发环境紧密结合,为开发者带来了极大的便利。在实际项目中,结合这些插件,开发者...

    java面试 分布式 集群 mongodb redis

    #### Java模板引擎对比:Velocity与FreeMarker 在Java开发中,模板引擎是非常重要的工具之一,主要用于将动态数据渲染到静态页面上。常见的两种模板引擎是Velocity和FreeMarker。 **2.1 Velocity的特点** - **...

    大型商城网站springmvc+freemarker+velocity+ibatis

    Velocity是另一个模板语言,与Freemarker类似,用于生成动态内容。它比JSP更加轻量级,更适合于模板驱动的应用。Velocity模板与Java代码完全分离,有助于提高开发效率和代码可读性。在这个项目中,Velocity可能是...

    nutz的freemarker视图插件

    - Nutz的MVC模式中,视图层支持多种模板引擎,包括JSP、Velocity、Freemarker等。 2. **Freemarker**: - Freemarker是一个模板语言,它与Java代码分离,使得开发者可以专注于页面布局和设计,而无需关心业务逻辑...

    FreeMarker概述2008

    FreeMarker与HTTP或Servlet容器无关,可在各种环境中使用,包括非Web应用。 FreeMarker的核心特性包括: 1. **通用目标**:FreeMarker能够生成各种文本格式,如HTML、XML、RTF等,并且可以通过自定义模板加载器从...

    Freemarker和Velocity介绍最新版中文2.29MB最新版本

    FreeMarker是一个用Java语言编写的模板引擎,它基于模板来生成文本输出,仅是利用模板加上数据生成文本页面,即是由Java程序准备要显示的数据,由FreeMarker生成页面,通过模板显示准备的数据,并可以在模板中使用...

    Struts2集成FreeMarker和Velocity,写成了工具类,快速实现页面静态化

    Struts2集成FreeMarker和Velocity,写成了工具类,快速实现页面静态化,以后直接调用即可,无需修改任何源代码,改压缩文件包括 1、工具类; 2、源码(含jar包); 3、mysql数据库可执行文件; 4、struts2集成...

    Velocity用户手册(中文)

    4. **Freemarker**: 虽然Velocity和Freemarker都是模板引擎,但它们各有特点,可以根据项目需求选择合适的工具。 总之,Velocity作为一款强大的模板引擎,对于Web开发中的前后端分离有着重要作用,它的简单性和灵活...

Global site tag (gtag.js) - Google Analytics