Velocity 与 FreeMarker

Thymeleaf、FreeMarkerVelocity区别和用法 Thymeleaf:适合现代 Web 应用,特别是需要生成静态 HTML 页面的应用。由于其 Spring 框架的良好集成,适合 Spring Boot 项目。FreeMarker:适合需要高性能和多种输出格式的应用,特别是在需要生成复杂文档的场景下。Velocity:适合需要简单易用模板语言的应用,特别是在需要高性能和插件扩展能力的场景下。 阅读详情

一.  Velocity

 

 Velocity是一个基于java的模板引擎(template engine)。它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象。 当Velocity应用于web开发时,界面设计人员可以和java程序开发人员同步开发一个遵循MVC架构的web站点,也就是说,页面设计人员可以只关注页面的显示效果,而由java程序开发人员关注业务逻辑编码。Velocity将java代码从web页面中分离出来,这样为web站点的长期维护提供了便利,同时也为我们在JSP和PHP之外又提供了一种可选的方案。 Velocity的能力远不止web站点开发这个领域,例如,它可以从模板(template)产生SQL和PostScript、XML,它也可以被当作一个独立工具来产生源代码和报告,或者作为其他系统的集成组件使用。Velocity也可以为Turbine web开发架构提供模板服务(template service)。Velocity+Turbine提供一个模板服务的方式允许一个web应用以一个真正的MVC模型进行开发。

 

 

二. FreeMarker

FreeMarker允许Java servlet保持图形设计同应用程序逻辑的分离,这是通过在模板中密封HTML完成的。模板用servlet提供的数据动态地生成 HTML。模板语言是强大的直观的,编译器速度快,输出接近静态HTML页面的速度。 

 

 

三.  比较

1、概述

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

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

Ø         使用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无关的stringlistmap

l         可以将字符串转换成大/小写、首字符大/小写,对HTMLXMLRTF进行转义处理,substringsplit、查询字符串长度、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         可以使用一组标记来封装模板的一块区域,以便在块区中所有要修改的地方应用HTMLXML转义(或其它使用FreeMarker表达式表示的转换)

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

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

l         可以使用stop指令停止render

10)文字

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

l         支持所有的Java转义文字:btnfr,也支持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         上述两者的结合使用

诠视MR眼镜Unity开发设置_Unity2020.3.38 请按照如下设置Android SDK 和 Gradle。打包前先将Unity切换到Android模式。Preferences 设置。 阅读详情

相关推荐

YOLO26改进 - C2PSA | C2PSA融合DiffAttention差分注意力:轻量级差分计算实现高效特征降噪,提升模型抗干扰能力

本文介绍了 DiffCLIP,一种将差分注意力机制集成到 CLIP 架构的视觉 - 语言模型,并将其应用于 YOLO26。差分注意力机制通过计算两个互补注意力分布的差值,抵消无关信息干扰。单头差分注意力将 Q 和 K 拆分,分别计算注意力分布后做差值融合;多头差分注意力则每个头独立执行差分操作后聚合输出。关键参数 λ 可动态调控噪声抵消强度。我们将 DiffAttention 代码集成到 YOLO26 中,替换原有模块。实验表明,改进后的 YOLO26 在图像 - 文本理解任务中表现出色。

魔改工程师的博客 564

Freemarker 取代 velocity theme templates

Liferay一直都是使用的velocity来作为默认的主题模版,例如经典主题(.../tomcat-6.0.x/webapps/ROOT/html/themes/classic/templates)包含的几个*.vm就是velocity模版 但是从6.0之后的版本开始支持freemarker模版 打开liferay-look-and-feel.xml [code="xml"] ...

yay2008 343

低底盘农业拖车 step_设计图纸 农机设备3D建模.zip

低底盘农业拖车 step_设计图纸 农机设备3D建模.zip

模板引擎:Velocity&FreeMarker

Velocity,名称字面翻译为:速度、速率、迅速,用在Web开发里,用过的人可能不多,大都基本知道和在使用Struts,到底Velocity和Struts(Taglib和Tiles)是如何联系?在技术上Velocity要比Struts Struts(Taglib和Tiles)先进,单从技术上考虑可以考虑Velocity;而Struts用的非常普遍,这样的人才也很多,所以对于公司来说,选择Stru...

weixin_30652491的博客 455

java模版引擎freemarkervelocity的对比

**一、是否维护** 1.Freemarkerfreemarker的官网中看到,fm在2015-7-1后就托管给apache基金会了,后面的bug修改都来自于git。最近的一次更新在2016年6月,顺便值得一提的是,这个版本是最后一个版本了。 Around 2015-07-01, FreeMarker was voted in into the Apache Incubator, and

夏夜的风的博客 6824

FreeMarkerVelocity之前端模板特性比较

一、简介 FreeMarker:  FreeMarker是一个用Java语言编写的模板引擎,它基于模板来生成文本输出。  所谓模板,就是一份已经写好了基本内容,有着固定格式的文档,其中空出或者用占位符标识的内容,由使用者来填充,不同的使用者给出的数据是不同的。在模板中的占位符,在模板运行时,由模板引擎来解析模板,并采用动态数据替换占位符部分的内容。  FreeMarkerWeb容器无关,即在We...

stujike123456的博客 536

freemarker pk velocity

 1、概述Velocity是一个简单而且更加轻量级的工具,但是它没有达到FreeMarker能够做的许多任务,而且它的模板语言不是很强大我们认为对于大多数应用程序,FreeMarkerVelocity工作更简单,因为:Ø使用Velocity,你需要寻找特定工具或各种工作环境来一次次的解决典型的模板创作任务,结果会浪费更多时间Ø工作环境经常意味着在Velocity模板中

The Last Song 的专栏 4847

VelocityFreeMarker

相比较FreeMarker而言,Velocity更加简单、轻量级,但它的功能却没有FreeMarker那么强大。依据评测的结论, freemarker 稍快一些。差别在毫秒级别,对用户而言可以忽略不计,若超大流量,考虑负载时,较倾向后者。 velocity 出现得较早些,也有更多的受众,因此在考虑到人员配给上,略占优势。但是模板技术上手都很快的,所以无所谓。 对于大部分的应用来说,使用 F...

hwakang的专栏 269

FreeMarker vs. Velocity

1、概述 Velocity是一个简单而且更加轻量级的工具,但是它没有达到FreeMarker能够做的许多任务,而且它的模板语言不是很强大 我们认为对于大多数应用程序,FreeMarkerVelocity工作更简单,因为: Ø使用Velocity,你需要寻找特定工具或各种工作环境来一次次的解决典型的模板创作任务,结果会浪费更多时间 Ø工作环境经常意味着在Velo

CTO=开发管理+架构+技术专栏 825

velocityfreemarker的比较

关键字: 模板技术 模板技术在现代的软件开发中有着重要的地位,而目前最流行的两种模板技术恐怕要算freemarkervelocity了,webwork2.2对两者都有不错的支持,也就是说在webwork2中你可以随意选择使用freemarkervelocity作为view,模板技术作为view的好处是很多,尤其和jsp比较起来优点更大,众所周知jsp需要在第一次被执行的时候编译成serv...

qiuyabing的专栏 1278

页面静态化技术velocityfreemarker比较

相比较 FreeMarker 而言,Velocity 更加简单、轻量级,但它的功能却没有 FreeMarker 那么强大。  对于大部分的应用来说,使用 FreeMarkerVelocity 更简单,因为 Velocity 还必须编写一些自定义的toolbox类以及一遍遍重复的编写一些比较通用的模版代码,因此也就丧失了刚开始开发时更多的宝贵时间。另外使用工具类和变通的方法在模版引擎中似

龙珠课堂 6801

velocity freemarker比较

相比较 FreeMarker 而言,Velocity 更加简单、轻量级,但它的功能却没有 FreeMarker 那么强大。  对于大部分的应用来说,使用 FreeMarkerVelocity 更简单,因为 Velocity 还必须编写一些自定义的toolbox类以及一遍遍重复的编写一些比较通用的模版代码,因此也就丧失了刚开始开发时更多的宝贵时间。另外使用工具类和变通的方法在模版引擎中似

xuyan5971的博客 529

velocity & freemarker

一、Velocity Velocity是一个基于java的模板引擎(template engine)。它允许任何人仅仅使用简单的模板语言(template language)来引用由java代码定义的对象。 当Velocity应用于web开发时,界面设计人员可以和java程序开发人员同步开发一个遵循MVC架构的web站点,也就是说,页面设计人员可以只关注页面的显示效果,而由java程序开发人员...

weixin_30362083的博客 139

thymeleaf、freemarkervelocity

1、概述 在java领域,表现层技术主要有三种, (1)jsp; (2)freemarker; (3)velocity; (4)thymeleaf; 2、jsp 优点: 1、功能强大,可以写java代码 2、支持jsp标签(jsp tag) 3、支持表达式语言(el) 4、官方标准,用户群广,丰富的第三方jsp标签库 5、性能良好。jsp编译成class文件执行,有很好的性能表现 缺点: jsp没有明显缺点,非要挑点骨头那就是,由于可以编写java代码,如使用不当容易破坏mvc结构。 3、freemarke

橙子 2230

jsp、velocityfreemarker三者优劣

先来说说各自的优缺点: jsp是大家最熟悉的技术 优点: 1、功能强大,可以写java代码 2、支持jsp标签(jsp tag) 3、支持表达式语言(el) 4、官方标准,用户群广,丰富的第三方jsp标签库 5、性能良好。jsp编译成class文件执行,有很好的性能表现 缺点: jsp没有明显缺点,非要挑点骨头那就是,由于可以编写java代码,如使用不当容易破坏mvc结构。 veloci...

2012年开始工作,全栈开发老兵,目前已是一个老师,分享这么多年的心得体会 1592

springboot FreeMarker Velocity 对比

1.Freemarker public void message(String mark, String type, Orderform orderform, String userId, String shouhouleixing) { if (shouhouleixing.equals("0")) { shouhouleixing = "仅退款"...

weixin_45637293的博客 470

JSPFreemarkervelocity的区别

作为一个后端小白白,在公司大牛们的熏陶之下开始龟速学Java,之前只会html,css和js,根不就不知道后台前台真正的交互是什么样的。因为之前做AngularJS的项目,直接通过一个url获取的数据,前后端完全分离。一直自以为现在的开发模式就是前端写页面,后台提供数据。看来真是Too young too naive.怪不得之前有个前辈说,前端就是一个做文案的。后端才是最强大的好嘛,既可以写功能,

你好,欢迎光临! 6868

VelocityFreeMarker优缺点

Velocity优点: [list=1] [*]采用简单而强大的模板语言VTL来渲染页面,能保证在Dreamwaver之类的可视化编辑器中正常显示。 [*]模板可以是任意扩展名,采用.html也可以,这样就能直接在浏览器中看到效果。 [*]渲染速度快。 [/list] Velocity缺点: [list=1] [*]不是JavaEE标准,文档较少。 [*]VTL...

SouthKing 371
上一篇: Tapestry 和 Wicket 的比较
下一篇: JMS
halemyan
博客等级 码龄19年 5粉丝 51原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值