Common Template Engine 发布版本 | 每日构建 >>  English | 中文
下载 更新 论坛 关于我们
文档
首页概览
模板指南
表达式指南
语法外套指南
配置指南
扩展指南
API使用指南
常见问题
对比其它模板引擎
集成
MVC框架集成
JSP标签集成
缓存策略集成
日志框架集成
数据格式集成
脚本引擎集成
邮件发送组件集成
第三方集成依赖包
工具
调试器说明
查看器说明
模板生成器说明
模板转换器说明
编辑器插件说明
代码生成器说明
开发
架构设计
开发规范
项目计划
需求场景
资源
下载
许可协议
更新日志
UML图
Java Doc
测试覆盖率报告
社区
开发团队
论坛
知识库
邮件列表
问题列表
报告问题

 
与其它模板引擎对比

1. 概述
声明:各模板引擎设计目标不同,纯功能性对比可能有失偏颇,此对比清单仅供参考。
Velocity的设计目标是功能最简化,所以它只提供10个左右的最基本的指令。
FreeMarker的设计目标是功能完备,所以它提供尽可能多的指令和builtin处理。
CommonTemplate的设计目标是高度可扩展和功能完备,所以它提供较多的扩展点。

2. 与Velocity特性对比清单
Velocity项目地址:
http://velocity.apache.org
Java Side:
Velocity只支持Tools扩展, 可外部扩展函数.
Velocity未作微核处理, 第三方包扩展较困难.
Velocity过程拦截面, 状态事件未处理.
Velocity指令不可扩展.
Velocity操作符不可扩展.
Template Side:
Velocity不支持宏导入.
Velocity不支持宏的内部块回调.
Velocity不支持模板继承, 较难实现框架页模板, 可借助sitemesh等实现.
Velocity不支持文本过滤指令.
Velocity不支持递归迭代, 并行迭代.
Velocity不支持break和continue迭代.
Velocity不支持数据块加载.
Velocity不支持国际化.
Velocity不支持块变量.
Velocity不支持闭包表达式
Velocity不支持日期操作符
Velocity不支持集合操作符
待补充...

3. 与FreeMarker特性对比清单
FreeMarker项目地址:
http://www.freemarker.org
(1) 语法
CommonTemplate有更一致的语法规则: $指令{表达式}, 而FreeMarker的<#>,${},#{},<@>等各式各样的前导符实在有点多.
(2) 表达式
CommonTemplate中所有指令的表达式模型是一致的, 所有操作符在所有指令中有效, 而FreeMarker每个指令表达式均不相同, 如: <#list xxx as x>中的"as"
(3) 外部属性
对于不可变类, FreeMarker采用?号操作符进行BuildIn处理, 而CommonTemplate采用属性扩展, 保持与原有属性一样的调用方式, 如: ${"james".capitalize}, 并且可以自行扩展.
(4) 扩展点
CommonTemplate在扩展点方面比FreeMarker做得更多, 包括各种拦截器,过滤器,事件,处理器等, 并且平等对待标准包与第三方包(也就是第三方包能实现或覆盖标准包所有功能).
(5) 宏指令
CommonTemplate的宏设计与FreeMarker类似, 同样支持回调内部块, 而且CommonTemplate将宏作为一等公民对待(也就是与标准指令同样的调用方式), 而FreeMarker采用特殊的<@>调用.
(6) 继承指令
除了宏, CommonTemplate支持模板继承(子模板可覆盖父模板中部分内容), 对布局非常有帮助.
(7) 集合迭代
CommonTemplate支持简单次数迭代,(用于输出树的)递归迭代, (多集合)并行迭代等
(8) 数据加载
CommonTemplate支持json, yaml, properties等格式数据加载.
(9) 工具
CommonTemplate拥有脱离开发环境的调试器, 查看器等工具, 可以使页面开发人员更独立的测试模板.
待补充...

 

版权所有 © 2007 - 2009 CommonTemplate 开发小组