2011-05-03 55 views
1

我正在使用一個動態的HTML模板系統(如PHP),我想知道這個問題/解決方案是否有名稱或已經在某個地方完成了。這個頁面渲染技術有一個名字嗎?

這個問題涉及動態控制內容,但事實上內容和代碼交織在一起。想想兩個頁面,一個使用了很多花哨的風格和框架,另一個沒有,但共享相同的「外部包裝器」模板。

<!DOCTYPE html> 
<html> 

<head> 
<title>Both pages share a static title</title> 
<script src="..." type="text/javascript"> 
<script src="..." type="text/javascript"> 
<script src="..." type="text/javascript"> 
</head> 

<body> 
<!-- only this part is dynamic, the top and bottom parts are shared among all pages --> 

... 
</body> 
</html> 

的計劃是留下記號其中報頭是,在體內修改的佔位符對象,然後替換佔位符的內容,其中令牌的頁面已完成後渲染(但被送到前客戶端)。

<!DOCTYPE html> 
<html> 

<head> 
__HEAD__ 
</head> 

<body> 
<? 
    $head->title('my very own title'); 
    $head->script('jquery 1.5.2');  
?> 

... 
</body> 
</html> 

該標記將擴展爲實際的HTML。

<!DOCTYPE html> 
<html> 

<head> 
<title>my very own title</title> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js" type="text/javascript"> 
</head> 

<body> 
... 
</body> 
</html> 

有沒有人見過這個?

編輯:這裏有人在談論同樣的問題,但有一個稍微不同的解決方案。

http://iamcam.wordpress.com/2007/07/15/smarty-assigning-variables-to-the-header-from-the-body/

編輯^ 2:下面的接受的答案是,這是東西模板引擎確實,這是真的。這種特殊情況的困難在於執行和模板引擎交織在一起(像老派的PHP),所以很難看清楚劃分。用適當的模板輕鬆解決。

回答

1

這被稱爲template engine。除了簡單地使用PHP作爲您的模板引擎之外,還提供了其他解決方案,如Smarty。此外,CakePHP和symfony等許多框架將它們的代碼分離爲佈局和視圖以支持這一點。

+0

哈哈,真的....... – dynamic 2011-05-03 19:36:37

+2

我想當你這麼說的時候,發現並不是那麼令人興奮...... – 2011-05-03 19:39:18

+0

我覺得很愚蠢/不好。我想,是的,這就是模板所做的事情,但我只是預想到直接替換/插值會稍微複雜一點。就像,變量可能是一個對象,它可能有方法,最終會通過渲染來響應方法。 我想我正在與Builder模式混合... – 2011-05-04 21:41:57

1

perl的最大示例是Template Toolkit。對於其他語言,你有ASP,JSP,EJS,Jade,鬍鬚等等。

1

依賴注入

的OP是不是在原來的問題清楚。要呈現的頁面主體應該被隔離到一個單獨的文件中。正是這個正文文件應該最終說明HTML標題中的內容,它由不同的文件控制。

所以,是的,輸出特定腳本的實際功能可以通過看中模板引擎提供的,但在這裏所表達的更重要的想法是依賴注入,其中頭文件並不需要了解的依賴在一些遙遠的地方和時間被確定。