Flask 某個(gè)模板引擎

2021-08-10 10:30 更新

Flask 在模板引擎上做了決定: Jinja2 。為什么 Flask 沒有一個(gè)即插的模板引擎 接口?顯然,你可以使用一個(gè)不同的模板引擎,但是 Flask 仍然會(huì)為你配置 Jinja2 。雖然 Jinja2 總是 配置的限制可能會(huì)消失,但綁定一個(gè)模板引擎并使用 的決策不會(huì)。

模板引擎與編程語言類似,每個(gè)模板引擎都有特定的理解事物工作的方式。表面上, 它們以相同方式工作:你給引擎一個(gè)變量的集合讓它為模板求值,并返回一個(gè)字符 串。

然而,關(guān)于相同點(diǎn)的論述結(jié)束了。例如 Jinja2 有一個(gè)全面的過濾器系統(tǒng),一個(gè)可靠 的模板繼承方式,可以從模板內(nèi)和 Python 代碼內(nèi)使用復(fù)用塊(宏)的支持,對(duì)所有 操作使用 Unicode,支持迭代模板渲染,可配置的語法等等。其它的引擎,一個(gè)類似 Genshi——基于 XML 流求值的引擎,模板繼承要考慮 XPath 可用性等等。而 Mako 像 對(duì)待 Python 模塊一樣處理模板。

當(dāng)把一個(gè)模板引擎跟一個(gè)應(yīng)用或框架聯(lián)系到一起,就不只是渲染模板了。比如, Flask 使用 Jinja2 全面的自動(dòng)轉(zhuǎn)義支持。同樣,也提供了從 Jinja2 模板中 訪問宏的途徑。

不去掉模板引擎的獨(dú)特特性的模板抽象層是一門對(duì)自身的科學(xué),也是像 Flask 的微框架的巨大事業(yè)。

此外,擴(kuò)展也可以簡易地依賴于一個(gè)現(xiàn)有的模板語言。你可以簡單地使用你自己的 模板語言,而擴(kuò)展會(huì)始終依賴于 Jinja 本身。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)