過濾器
過濾器讓您在 Pug 範本中使用其他語言。它們將一區塊純文字作為輸入。
若要將選項傳遞給篩選器,請在篩選器名稱後加上括號,並將選項新增在括號內(就像您對 標籤屬性 所做的那樣)::less(ieCompat=false)
。
所有 JSTransformer 模組 都可用作 Pug 篩選器。熱門篩選器包括 :babel
、:uglify-js
、:scss
和 :markdown-it
。查看 JSTransformer 文件,以取得特定篩選器支援的選項。
如果您找不到適合您使用案例的篩選器,您可以撰寫自己的 自訂篩選器。
例如,如果您想在 Pug 範本中使用 CoffeeScript 和 Markdown(使用 Markdown-it 渲染器),您會先確定已安裝這些功能
$ npm install --save jstransformer-coffee-script
$ npm install --save jstransformer-markdown-it
現在,您應該能夠渲染以下範本
警告
篩選器會在編譯時渲染。這讓它們執行速度很快,但也表示它們無法支援動態內容或選項。
預設情況下,瀏覽器中的編譯無法存取基於 JSTransformer 的篩選器,除非已明確封裝 JSTransformer 模組,並透過 CommonJS 平台(例如 Browserify 或 Webpack)提供。事實上,您現在正在閱讀的頁面使用 Browserify 在瀏覽器中提供篩選器。
在伺服器上預先編譯的範本沒有這個限制。
內嵌語法
如果篩選器的內容很短,甚至可以將篩選器用作標籤
已篩選的包含
您也可以使用 包含語法,將篩選器套用至外部檔案。
巢狀篩選器
您可以在同一區塊文字上套用多個濾鏡。若要這麼做,只要在同一行上指定濾鏡即可。
濾鏡會以相反的順序套用。文字會先傳遞給最後一個濾鏡;然後,結果會傳遞給倒數第二個濾鏡,依此類推。
在以下範例中,指令碼會先由 babel
轉換,然後再由 cdata-js
轉換。
自訂濾鏡
您可以透過 filters
選項 將自己的濾鏡新增至 Pug。
options.filters = {
'my-own-filter': function (text, options) {
if (options.addStart) text = 'Start\n' + text;
if (options.addEnd) text = text + '\nEnd';
return text;
}
};
p
:my-own-filter(addStart addEnd)
Filter
Body
<p>
Start
Filter
Body
End
</p>