PHP中的7個模板引擎

當我們在PHP中討論模板引擎時,許多開發人員會告訴你,這是沒有必要的,他們會說這是學習時間和資源的浪費,因為PHP本質上也是一個模板引擎。但是當你看過很多框架之後,你會發現很多框架都會有模板引擎的存在,所以說php中的模板引擎還是有必要了解一下的。

Mustache

受 ctemplate 和 et等的啟發,Mustache 是一種與框架無關的方式來呈現無邏輯視圖。正如 ctemplates 所說,"它強調將邏輯與表示分離:不可能將應用程序邏輯嵌入到這種模板語言中。視圖不是由 ERB 或 HAML 組成的視圖,而是包含隨機幫助器和任意邏輯,而是分為兩個部分:PHP 類和 HTML 模板。所有邏輯、決策和代碼都包含在視圖中。所有標記都包含在模板中。模板除了在視圖中的引用方法外,什麼都不做。這種嚴格的分離使編寫乾淨的模板更容易,更容易測試視圖,並且更有趣地處理應用的前端。


PHP中的7個模板引擎


以下代碼段提供了 Mustaches 語法外觀的預覽:

<code>Hello {{name}}
You have just won {{value}} dollars!
{{#in_ca}}
Well, {{taxed_value}} dollars, after taxes.
{{/in_ca}}/<code>

Plates

plates是一個原生PHP模板系統,快速,易於使用,易於擴展是它的特性。它受到出色的 Twig 模板引擎的啟發,並努力將現代模板語言功能引入 PHP 模板中。plates原生的PHP 模板而不是編譯的模板語言(如 Twig 或 Smarty),因此受到對速度要求極致的開發人員喜愛。

PHP中的7個模板引擎

此模板引擎具有:

  • 原生的 PHP 模板,無需學習新語法
  • plates是模板系統,而不是模板語言
  • plates鼓勵使用現有的PHP函數
  • 通過模板佈局和繼承增加代碼重用
  • 用於將模板分組到命名空間的模板文件夾
  • 跨模板的數據共享
  • 將數據預先分配給特定模板
  • 內置逃生幫助器
  • 易於使用的功能和擴展
  • 與框架無關,將與任何項目配合使用
  • 分離設計使模板易於測試
  • 可以使用composer引入

以下代碼段提供了板模板引擎語法外觀的預覽:

<code>

$this->layout('template', ['title' => 'User Profile']) ?>

Welcome!


Hello =$this->e($name)?>



Friends











Invitations


You have some friend invites!


/<code>

Blade

blade是laravel內置的模板引擎。與其他流行的PHP模板引擎不同,Blade 不會限制您在視圖中使用純 PHP 代碼。事實上,所有 Blade 視圖都編譯成普通的 PHP 代碼並緩存,直到修改它們,這意味著 Blade 基本上為應用程序增加了零開銷。視圖文件使用 .blade.php 文件擴展名。

然而離開laravel,我們很少看到blade的身影,這也許也是它沒有更流行的一個原因吧。

Volt

Volt 是一種超快且設計友好的模板語言,採用 C 來編寫的。Volt 與 Phalcon 的其他組件高度集成,就像您可以在應用程序中將其用作獨立組件一樣。volt的靈感來自Jinja,最初由阿明·羅納徹創作。。Volt 的語法和功能已經通過更多的元素進行了增強,當然,開發人員在使用 Phalcon 時已經習慣了它的極致性能。

以下代碼段提供了 Volt 代碼外觀的快速預覽:

<code>{# app/views/products/show.volt #}

{% block last_products %}

{% for product in products %}
* Name: {{ product.name|e }}
{% if product.status === 'Active' %}
Price: {{ product.price + product.taxes/100 }}
{% endif %}
{% endfor %}

{% endblock %}/<code>

Dwoo

Dwoo 是 PHP 的現代、靈活和麵向的對象模板引擎,有助於將表示 (HTML/CSS) 與應用程序邏輯分離。在許多方面,dwoo 與 Smarty 的模板和插件兼容,因為 dwoo 的作者基於 Smarty 引入到 Web 開發領域的一般想法。

Dwoo 的模板引擎是一個寫得很好、面向對象的模板引擎,與 Smarty 相比,它允許更輕鬆、更快的開發,並且它仍然足夠兼容,允許使用 Smarty 的開發人員平穩過渡到 dwoo。

以下代碼段提供了 Dwoo 語法外觀的預覽:

<code>


<title>My Webpage/<title>




My Webpage


{$a_variable}

/<code>

Smarty

Smarty 是誕生非常早的 PHP 的模板引擎,它設計之初就是為了將表示 (HTML/CSS) 與應用程序邏輯分離。這意味著PHP代碼是應用程序邏輯,並且與表示分離。Smarty 將模板的副本編譯為 PHP 腳本。通過這種方式,您可以獲得模板標記語法和 PHP 速度的優點。首次調用每個模板,然後從該點開始使用編譯版本,編譯一次。Smarty 會為您處理這一問題,因此模板設計器只需編輯 Smarty 模板,就更改了編譯的版本,此方法使模板易於維護,並且由於編譯的版本是PHP,操作代碼加速器(如 APC 或 ZendCache)將繼續處理已編譯的腳本。

PHP中的7個模板引擎

Smarty 是一個模板引擎,用作應用程序的 View 組件。Smarty 可輕鬆與上面列出的任何引擎耦合為視圖組件。Smarty 不保證良好的應用程序設計或適當的演示分離,這仍然需要由有能力的開發人員和網頁設計人員來解決。

以下代碼段提供了語法外觀的預覽:

<code>{include file="header.tpl" title="Info"}

User Information:



Name: {$name|capitalize}



Address: {$address|escape}


{include file="footer.tpl"}

/<code>


Twig

Twig 是 PHP 的模板語言。Twig 使用類似於 Django 和 Jinja 模板語言的語法,這些語言啟發了 Twig 的發展。


PHP中的7個模板引擎

  • 快速: Twig編譯模板到純優化的 PHP 代碼。與常規PHP代碼相比,開銷減少到最低限度。
  • 安全:Twig具有用於評估不受信任的模板代碼的沙盒模式。這允許 Twig 用作用戶可以修改模板設計的應用程序的模板語言。
  • 靈活:Twig由靈活的詞彙和解析器提供動力。這允許開發人員定義自己的自定義標記和篩選器,並創建自己的 DSL。

Twig 支持輕鬆構建強大模板所需的一切:多個繼承、塊、自動輸出轉義等等。語法易於學習,並已經過優化,使 Web 設計人員無需妨礙其操作即可快速完成工作。

以下代碼段提供了此模板引擎語法的預覽:

<code>

{{ form_label(form.dueDate) }}
{{ form_widget(form.dueDate) }}

<small>{{ form_help(form.dueDate) }}/<small>


{{ form_errors(form.dueDate) }}

/<code>

LATTE

latte也是PHP的模板引擎之一,它可簡化您的工作並確保輸出免受漏洞(如 XSS)的攻擊。

PHP中的7個模板引擎

  • latte是快速的:它編譯模板到平原優化的PHP代碼。
  • latte是安全的:
    它是第一個引入內容感知的逃避的PHP引擎。
  • latte是易用的:它有直觀的語法,並可以幫助你輕鬆建立更好的網站。

latte語法是:

<code>

    {foreach $items as $item}
    \t
  • {$item|capitalize}

  • {/foreach}
/<code>


分享到:


相關文章: