【FreeMarker 基本功能介绍】

1、FreeMarker 介绍

FreeMarker是一款模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页、电子邮件、配置文件、源代码等)的通用工具。 它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件。类似PHP中的Smarty,Smarty是一个php模板引擎

FreeMarker是免费的,基于Apache许可证2.0版本发布。其模板编写为FreeMarker Template Language(FTL),属于简单、专用的语言。需要准备数据在真实编程语言中来显示,比如数据库查询和业务运算, 之后模板显示已经准备好的数据。在模板中,主要用于如何展现数据, 而在模板之外注意于要展示什么数据。

Apache FreeMarker is a template engine: a Java library to generate text output (HTML web pages, e-mails, configuration files, source code, etc.) based on templates and changing data. Templates are written in the FreeMarker Template Language (FTL), which is a simple, specialized language (not a full-blown programming language like PHP). You meant to prepare the data to display in a real programming language, like issue database queries and do business calculations, and then the template displays that already prepared data. In the template you are focusing on how to present the data, and outside the template you are focusing on what data to present.



 

2、Features

A few highlights of FreeMarker:

Powerful template language: Conditional blocks, iterations, assignments, string and arithmetic operations and formatting, macros and functions, including other templates, escaping by default (optional), and many more

Multipurpose and lightweight: Zero dependencies, any output format, can load templates from any place (pluggable), many configuration options

Internationalization/localization-aware: Locale sensitive number and date/time formatting, localized template variations.

XML processing capabilities: Drop XML DOM-s into the data-model and traverse them, or even process them declaratively

Versatile data-model: Java objects are exposed to the template as a tree of variables through pluggable adapters, which decides how the template sees them.

性能特点

模板并没有包含程序逻辑来查找当前的访问者是谁,或者去查询数据库获取最新的产品。显示的数据是在FreeMarker之外准备的,通常是一些“真正的”编程语言(比如Java)所编写的代码。模板作者无需知道这些值是如何计算出的。事实上,这些值的计算方式可以完全被修改,而模板可以保持不变,而且页面的样式也可以完全被修改而无需改动模板。当模板作者(设计师)和程序员不是同一人时,显示逻辑和业务逻辑相分离的做法是非常有用的,即便模板作者和程序员是一个人,这么来做也会帮助管理应用程序的复杂性。保证模板专注于显示问题(视觉设计,布局和格式化)是高效使用模板引擎的关键[11]  。

MyEclipse工具下的编辑界面

MyEclipse工具下的编辑界面

1. 通用性

  能够生成各种文本:HTML、XML、RTF、Java源代码等等。

  易于嵌入到产品中:轻量级;不需要Servlet环境。

  插件式模板载入器:可以从任何源载入模板,如本地文件、数据库等等。

  可以按所需生成文本:保存到本地文件;作为Email发送;从Web应用程序发送它返回给Web浏览器。

2. 模板语言

  所有常用的指令:include、if/elseif/else、循环结构。

  在模板中创建和改变变量。

  几乎在任何地方都可以使用复杂表达式来指定值。

  命名的宏,可以具有位置参数和嵌套内容。

  名字空间有助于建立和维护可重用的宏库,或者将一个大工程分成模块,而不必担心名字冲突。

  输出转换块:在嵌套模板片段生成输出时,转换HTML转义、压缩、语法高亮等等;可以定义自己的转换。

3. 通用数据模型

  FreeMarker不是直接反射到Java对象,Java对象通过插件式对象封装,以变量方式在模板中显示。

  可以使用抽象(接口)方式表示对象(JavaBean、XML文档、SQL查询结果集等等),告诉模板开发者使用。方法,使其不受技术细节的打扰。

xml配置

xml配置

4. 为Web准备

  在模板语言中内建处理典型Web相关任务(如HTML转义)的结构。

  能够集成到Model2 Web应用框架中作为JSP的替代。

  支持JSP标记库。

  为MVC模式设计:分离可视化设计和应用程序逻辑;分离页面设计员和程序员。

5. 智能的国际化和本地化

  字符集智能化(内部使用UNICODE)。

  数字格式本地化敏感。

  日期和时间格式本地化敏感。

  非US字符集可以用作标识(如变量名)。

  多种不同语言的相同模板。

6. XML处理能力

  <#recurse> 和<#visit>指令(2.3版本)用于递归遍历XML树。

  在模板中清楚和直接的访问XML对象模型

猜你喜欢

转载自gaojingsong.iteye.com/blog/2323030