【FreeMarker 基本功能介紹】

分類:IT技術 時間:2016-10-16

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對象模型

  • 大小: 11.6 KB
  • 查看圖片附件

Tags: 數據庫查詢 business database displays generate

文章來源:


ads
ads

相關文章
ads

相關文章

ad