1、linux下的web開發,動态頁面生成很費周折,通常利用cgi接受請求,然後傳回頁面給請求端。代碼邏輯和顯示邏輯寫在一起,是一件很痛苦的事情。C++裡的google ctemplate,便是解決這個問題。【1】
ctemplate解決的主要問題是将文字表達和邏輯分離開來:文字模闆解決如何用合适的文字和形式來表示問題,而邏輯問題則由文字模闆的調用者在源代碼中完成。
ctemplate大體上分為兩個部分,一部分是模闆,另一部分是資料字典。模闆定義了界面展現的形式(V),資料字典就是填充模闆的資料(M),你自己寫業務邏輯去控制界面展現(C),典型的MVC模型。
2、ctemplate模闆中有四中标記,對應的資料字典也有不同的處理方式:
① 變量,{{變量名}},用兩個大括号包含的就是變量名,在c++代碼中,可以對變量指派,任何類型的值都可以(如字元,整數,日期等)。
② 片斷,{{#片斷名}},片斷在資料字典中表現為一個子字典,字典是可以分級的,根字典下面有多級子字典。片斷可以處理條件判斷和循環。
③ 包含,{{>模闆名}}包含指的是一個模闆可以包含其他模闆,對應的也是一個字字典。
④ 注釋,{{!注釋名}},包含注釋。
3、示例程式
模闆

example.tpl
字典邏輯

.cpp
運作結果

View Code
4、說明,編譯時:
g++ -g -o test_ct test_template.cpp -lctemplate
要加ctemplate靜态庫來包含所引用的檔案。
參考
【4】 ctemplate安裝包下載下傳位址:
<a href="http://code.google.com/p/google-ctemplate/downloads/list">http://code.google.com/p/google-ctemplate/downloads/list</a>
【5】示例程式
<a href="http://code.google.com/p/google-ctemplate/">http://code.google.com/p/google-ctemplate/</a>