2012-01-17 71 views
-1

輸入html非常無聊,佔用太多空間並降低代碼的可讀性。如果要構建這樣一個函數,並且使用標記函數編寫所有html,該怎麼辦?我知道只是html更快,但如果通過標記函數來編寫html,它將如何影響網站性能和頁面加載時間。一般來說,這樣渲染html不壞?非常感謝。避免輸入html標籤,優點和缺點

<?php 
function tag($elem, $attr, $emb_elem = array()){ 
    $arr = explode("|", $attr); 
    $attr_key = explode(',' , $arr[0]); 
    $attr_val = explode(',', $arr[1]); 
    $html = "<" . $elem; 
    for($i=0; $i<count($attr_key); $i++){ 
     $html .= " " . $attr_key[$i] . "='". $attr_val[$i] . "'"; 
    } 
    $html .= ">"; 
    for($i=0; $i<count($emb_elem); $i++){ 
     $html .= $emb_elem[$i]; 
    } 
    $html .="</" . $elem . ">"; 
    return $html; 
} 

echo tag("p", "class,id|someclass,someid", array("some data")); 
# output: <p class='someclass' id='someid'>some data</p> 

回答

2

渲染HTML這樣總比沒有這樣做慢 - 問題是,這多少影響您的網站與您節省多少時間來寫這個樣子。有可能寫這種方式可能很好,許多框架包括類似的方法。

如果您的網站以這種方式工作,請考慮緩存頁面,使其無需爲每一頁加載渲染頁面。

你可能有興趣閱讀有關Jade,它轉換成HTML這樣的:

!!! 5 
html(lang="en") 
    head 
    title= pageTitle 
    script(type='text/javascript') 
     if (foo) { 
     bar() 
     } 
    body 
    h1 Jade - node template engine 
    #container 
     - if (youAreUsingJade) 
     p You are amazing 
     - else 
     p Get on it! 
+0

我想保持簡單,在本機代碼和乾淨,不想使用任何外部庫做到這一點。只擔心表現,不熟悉緩存,但會檢查出來。 – user610961 2012-01-17 11:04:24

+0

那麼你可以使用現有的緩存系統,或建立自己的。實質上,你只是準備PHP頁面,而不是迴應它,你將它保存爲一個HTML文件,而只是加載它。如果你曾經使用過Movable Type,那麼它就是如何工作的。 – 2012-01-17 11:53:11

0

從你的PHP應用程序刪除HTML方面將會讓你陷入困境,只要你開發團隊用專門的網頁設計師,或者只要您根據預定義的HTML佈局進行開發。

如果你希望你的技能包括填充預先設計的HTML和功能,我強烈建議使用選擇的模板引擎(我最喜歡的)或者只是讓你的HTML「附近」你的PHP代碼(不太靈活)。

+0

我想走這條路,我一個人工作(設計和編碼)。只擔心我在表演中輸了多少 – user610961 2012-01-17 11:09:05