歡迎來到小豬圈!

2009-03-31

自製的 PHP 模版引擎:Classifield

  • Classifield 的主要特色是將模板語法嵌入 HTML 元素的 class 屬性裡。
  • 絕大部份的 HTML 元素都有 class 屬性,而且可以輸入複數的值,不會影嚮既有的 CSS class selector 。
  • 沒有 class 屬性的 HTML 元素有:html 、 head 、 title 、 meta 、 link 、 param script 、 style。
  • Classifield 的原始碼可以到 Google Code (http://code.google.com/p/classifield/)下載。
  • Classifield 使用(接近)純碎 HTML 的模板,幾項特色或優缺點:
    • 模板可以直接用瀏覽器預覽,以及可以被驗証 (參見:The W3C Markup Validation Service)。
    • 分離模板邏輯與模板語法,將程式與美工人員的分工更為明確。
    • 模板不需要插入 PHP 程式碼、模板專用的語法或其它 HTML 以外的語法,對負責模板設計美工的而言,較為友善。
    • 模板能被任何一般文字網頁編輯器,或所見即所得的網頁編輯器正確的開啟。
    • 承上,模板能在所見即所得的網頁編輯器裡編寫模板的語法。以 PHP (本身也是模板引擎) 插入變數到元素的屬性值裡為例:
      <div <?php echo $var1?>="<?=$var2?>"></div>
      部份編輯器會限制或自動編碼元素屬性欄位。
    • 模板語法可以結合網頁結構,下為 Smarty 與 Classifield 的差別:
      <ul>
      {foreach from=$myArray item=foo}
          <li>{$foo}</li>
      {/foreach}
      </ul>
      <ul class="php-foreach-myArray-as-foo">
        <li class="php-echo-foo"></li>
      </ul>
    • 使用即有的技術,減少學習門檻。
    • 需要 DOM lib 剖析模板,降低執行時的效能與提高記憶體需求。
    • 需要其它選擇元素的方式,如QueryTemplates使用的 CSS selector (by phpQuery)
  • 關於分離模板邏輯與模板語法,此點可參考另一個模板引擎 QueryTemplates,該模板引擎做的比較徹底。以及該作者的文章(Pure HTML templates theory « Personal devlog)。

No comments:

Post a Comment

Comment Form Message

標籤分類

Blog Archive

Labels

Google Analytics Tracking Code

About Me

My photo
Keelung, R.O.C, Taiwan
一個不學無術、混吃等死的傢伙…