twig的特點(diǎn)有:簡(jiǎn)潔、模板化語法、功能強(qiáng)大,提供創(chuàng)建模板所需要的一切功能、簡(jiǎn)單易學(xué)、擴(kuò)展性、經(jīng)過完整的單元測(cè)試,足夠穩(wěn)定、文檔完備、安全、錯(cuò)誤提示、快速。
twig的特點(diǎn)
簡(jiǎn)潔
相對(duì) Twig 而言,在模板中使用 PHP語法會(huì)顯得特別冗長,尤其需要對(duì)輸出進(jìn)行一些處理時(shí),這種情況會(huì)變得更加明顯:
<?php echo $var ?> <?php echo htmlspecialchars($var, ENT_QUOTES, 'UTF-8') ?>
實(shí)現(xiàn)同樣的操作,Twig 使用更簡(jiǎn)介的語法,易讀性也更高
{{ var }} {{ var|escape }} {{ var|e }} {# 變量轉(zhuǎn)義(escape)的簡(jiǎn)寫 #}
模板化語法
Twig 為常見的業(yè)務(wù)邏輯提供了很多快捷寫法,例如遍歷數(shù)組可能為空時(shí),可以這樣判斷:
{% for user in users %} * {{ user.name }} {% else %} No users have been found. {% endfor %}
功能強(qiáng)大
Twig 提供創(chuàng)建模板所需要的一切功能,如多重繼承、內(nèi)容塊、輸出自動(dòng)轉(zhuǎn)義等等
{% extends "layout.html" %} {% block content %} Content of the page... {% endblock %}
簡(jiǎn)單易學(xué)
Twig 的語法進(jìn)行了大量改進(jìn),非常簡(jiǎn)單易學(xué),用戶稍加學(xué)習(xí)就可以快速地進(jìn)行模板創(chuàng)建。
擴(kuò)展性
開發(fā)人員可以基于 Twig 提供的框架擴(kuò)展自己的標(biāo)簽、過濾器、函數(shù),來使 Twig 獲得各種簡(jiǎn)單或復(fù)雜的能力。
單元測(cè)試
Twig 經(jīng)過完整的單元測(cè)試,足夠穩(wěn)定,即使用于大型項(xiàng)目也沒有問題
文檔完備
Twig 的文檔很完備,使用指南和完整的API文檔都可以在線閱讀:https://twig.symfony.com/doc/1.x/
安全
轉(zhuǎn)出轉(zhuǎn)義:為了安全起見,需要對(duì)模板中的代碼進(jìn)行轉(zhuǎn)義。Twig 可以提供全局或代碼塊級(jí)別的自動(dòng)轉(zhuǎn)義功能
{% autoescape "html" %} {{ var }} {{ var|raw }} {# var 不轉(zhuǎn)義 #} {{ var|escape }} {# var 不會(huì)重復(fù)轉(zhuǎn)義 #} {% endautoescape %}
沙盒:Twig 可以將任何模板置于沙盒環(huán)境中執(zhí)行,讓用戶只能訪問由開發(fā)者定義的一部分標(biāo)簽、過濾器或方法,從而使得程序更加安全。沙盒環(huán)境可以全局啟用,也可以只為部分模板啟用。
{{ include('page.html', sandboxed = true) }}
錯(cuò)誤提示
當(dāng)模板中出現(xiàn)語法錯(cuò)誤時(shí),Twig會(huì)提供非常實(shí)用的信息,指出出錯(cuò)的文件名及代碼位置,為開發(fā)調(diào)試提供了便利性。
快速
Twig 創(chuàng)立的目標(biāo)之一,就是越快越好。通過將模板編譯成優(yōu)化的PHP代碼,實(shí)現(xiàn)比傳統(tǒng)PHP代碼更快的效率。