FreeMarker設計指南(1)
template/2006-10-30/9a8a44c04a09d111.html
1、快速入門
(1)模板 + 資料模型 = 輸出
FreeMarker基於設計者和程式設計師是具有不同專業技能的不同個體的觀念
他們是分工勞動的:設計者專注於表示——建立HTML檔案、圖片、Web頁面的其它視覺化方面;程式設計師
建立系統,生成設計頁面要顯示的資料
經常會遇到的問題是:在Web頁面(或其它型別的文件)中顯示的資訊在設計頁面時是無效的,是基於動
態資料的
在這裡,你可以在HTML(或其它要輸出的文字)中加入一些特定指令,FreeMarker會在輸出頁面給最終
使用者時,用適當的資料替代這些程式碼
下面是一個例子:
Welcome ${user}!
Our latest product:
${latestProduct.name}!
這個例子是在簡單的HTML中加入了一些由${…}包圍的特定程式碼,這些特定程式碼是FreeMarker的指令,而
包含FreeMarker的指令的檔案就稱為模板(Template)
至於user、latestProduct.url和latestProduct.name來自於資料模型(data model)
資料模型由程式設計師程式設計來建立,向模板提供變化的資訊,這些資訊來自於資料庫、檔案,甚至於在程式中
直接生成
模板設計者不關心資料從那兒來,只知道使用已經建立的資料模型
下面是一個可能的資料模型:
(root)
|
+- user = "Big Joe"
|
+- latestProduct
|
+- url = "products/greenmouse.html"
|
+- name = "green mouse"
資料模型類似於計算機的檔案系統,latestProduct可以看作是目錄,而user、url和name看作是檔案,
url和name檔案位於latestProduct目錄中(這只是一個比喻,實際並不存在)
當FreeMarker將上面的資料模型合併到模板中,就建立了下面的輸出:
Welcome Big Joe!
Our latest product:
green mouse!
(2)資料模型
典型的資料模型是樹型結構,可以任意複雜和深層次,如下面的例子:
(root)
|
+- animals
| |
| +- mouse
| | |
| | +- size = "small"
| | |
| | +- price = 50
| |
| +- elephant
| | |
| | +- size = "large"
| | |
| | +- price = 5000
| |
| +- python
| |
| +- size = "medium"
| |
| +- price = 4999
|
+- test = "It is a test"
|
+- whatnot
|
+- because = "don't know"
類似於目錄的變數稱為hashes,包含儲存下級變數的唯一的查詢名字
類似於檔案的變數稱為scalars,儲存單值
scalars儲存的值有兩種型別:字串(用引號括起,可以是單引號或雙引號)和數字(不要用引號將數
字括起,這會作為字串處理)
對scalars的訪問從root開始,各部分用“.”分隔,如animals.mouse.price
另外一種變數是sequences,和hashes類似,只是不使用變數名字,而使用數字索引,如下面的例子:
(root)
|
+- animals
| |
| +- (1st)
| | |
| | +- name = "mouse"
| | |
| | +- size = "small"
| | |
| | +- price = 50
| |
| +- (2nd)
| | |
| | +- name = "elephant"
| | |
| | +- size = "large"
| | |
| | +- price = 5000
| |
| +- (3rd)
| |
| +- name = "python"
| |
| +- size = "medium"
| |
| +- price = 4999
|
+- whatnot
|
+- fruits
|
+- (1st) = "orange"
|
+- (2nd) = "banana"
這種對scalars的訪問使用索引,如animals[0].name
(3)模板
在FreeMarker模板中可以包括下面三種特定部分:
Ø ${…}:稱為interpolations,FreeMarker會在輸出時用實際值進行替代
Ø FTL標記(FreeMarker模板語言標記):類似於HTML標記,為了與HTML標記區分,用#開始(有些以@開始,在後面敘述)
Ø 註釋:包含在
下面是一些使用指令的例子:
Ø if指令
Pythons are cheaper than elephants today.
Pythons are not cheaper than elephants today.
#if>
Ø list指令
We have these animals:
Name | Price |
---|---|
${being.name} | ${being.price} Euros #list> |
輸出為:
We have these animals:
Name | Price |
---|---|
mouse | 50 Euros |
elephant | 5000 Euros |
python | 4999 Euros |
Ø include指令
Test page
Blah blah...
Ø 一起使用指令
We have these animals:
Name | Price |
---|---|
#if> ${being.name} #if> | ${being.price} Euros #list> |
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/750220/viewspace-905564/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- FreeMarker設計指南(2)
- FreeMarker設計指南(3)
- FreeMarker設計指南(4)
- WebGL程式設計指南(1)簡介Web程式設計
- DirectX8程式設計指南-1 (轉)程式設計
- 最爛的1%程式設計師生存指南程式設計師
- Python函數語言程式設計指南(1):概述Python函數程式設計
- [筆記]UML:java程式設計師指南[1-4]筆記Java程式設計師
- POCO庫中文程式設計參考指南(1)總覽程式設計
- [譯]AppExtension程式設計指南:擴充套件基礎1APP程式設計套件
- 《WebGL程式設計指南》學習筆記——1.WebGL概述Web程式設計筆記
- restful api設計指南RESTAPI
- 微服務設計指南微服務
- JavaScript SDK 設計指南JavaScript
- RESTful API 設計指南RESTAPI
- 互動設計指南
- RESTFUL API 安全設計指南RESTAPI
- SVGA 設計使用指南SVG
- Core Text 程式設計指南程式設計
- 程式設計師脫單指南程式設計師
- UX設計指南 - DEV社群UXdev
- Spark—GraphX程式設計指南Spark程式設計
- SAP OData程式設計指南程式設計
- 滾動視差設計指南
- 程式設計師跳槽指南程式設計師
- RESTful API 設計指南【轉】RESTAPI
- Java Socket 程式設計指南Java程式設計
- 程式設計師熬夜指南程式設計師
- bash 程式設計指南(轉)程式設計
- 服務端指南 | 良好的 API 設計指南服務端API
- 服務端指南 | 微服務初級設計指南服務端微服務
- Posix執行緒程式設計指南(1)-執行緒建立與取消 (轉)執行緒程式設計
- 程式設計師裝B指南程式設計師
- 遊戲程式設計入門指南遊戲程式設計
- 全境封鎖UI設計指南UI
- React元件「設計模式」快速指南React元件設計模式
- 程式設計師防猝死指南程式設計師
- 程式設計師【黑話】指南程式設計師