[英]In Pug Interpolation, what's the real difference between using buffered code and using #{..}?
如插值文檔中所述:
- var title = "On Dogs: Man's Best Friend"; - var author = "enlore"; - var theGreat = "<span>escape;</span>": h1= title p Written with love by #{author} p This will be safe: #{theGreat}
title
遵循本地評估模板的基本模式,但#{
和}
之間的代碼被評估、轉義,並將結果緩沖到正在呈現的模板的 output 中。這可以是任何有效的 Javascript 表達式,因此您可以做任何感覺良好的事情。
但是, h1= title
中的緩沖代碼仍然是“已評估、轉義、緩沖...”,並且“支持 JavaScript 表達式的全部范圍”,如此處所述。
那么區別是什么呢? 我想不通。
緩沖代碼以
=
開頭。 它評估 JavaScript 表達式並輸出結果。 為了安全起見,緩沖代碼首先被 HTML 轉義。
#{
和}
之間的代碼被評估、轉義,並將結果緩沖到正在呈現的模板的 output 中。這可以是任何有效的 Javascript 表達式,因此您可以做任何感覺良好的事情。
所以,他們倆:
即他們都做同樣的事情。 那該用哪一個呢? 我的直覺說:
例子:
// Normal JS variables
- const name = 'John'
- const greeting = `Hello ${name}!`
// Buffered code
p= greeting // 1
p= 'Hello ' + name + '!' // 2
p= `Hello ${name}!` // 3
// Interpolation
p Hello #{name}! // 4
p #{greeting} // 5
p #{'Hello ' + name + '!'} // 6
p #{`Hello ${name}!`} // 7
// Output in all cases:
<p>Hello John!</p>
請注意,數字 3 和 7 使用模板文字。 不要與 Pug 的字符串插值(數字 4-7)相混淆。
在我看來:
#{
和}
中的 JS 表達式之外不包含任何其他內容,因此為了清楚起見,您不妨使用緩沖代碼。 (但您可能更喜歡它們,這很好。這是個人喜好問題。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.