缓冲和非缓冲代码有什么区别?

Ian*_*ton 5 javascript pug

这个文档令人困惑.

它说,无缓冲的代码不会直接输出任何代码.那是什么意思?

但总的来说,缓冲和非缓冲代码之间有什么区别?

如果他们没有禁用复制并右键单击页面也会很好!

mat*_*tty 11

"无缓冲"表示代码已执行,但结果发送到输出缓冲区.

"Buffered" 意味着代码被执行,结果发送到输出缓冲区.

例如,这个玉:

.unbuffered
  - 'unbuffered vs buffered'

.buffered
  = 'unbuffered vs buffered'
Run Code Online (Sandbox Code Playgroud)

生成此HTML:

<div class="unbuffered">
</div>
<div class="buffered">unbuffered vs buffered
</div>
Run Code Online (Sandbox Code Playgroud)


axe*_*uch 0

请忽略此答案,因为正如评论中指出的那样,它是不正确的

我邀请您看看马蒂的回答。


根据我在您共享的文档链接中的理解,我想说有一个主要区别:


无缓冲的代码在读取时不会执行,而是会延迟执行(看起来像 JavaScript),这意味着字符串会被后处理。

看起来他们将字符串映射到内部例程,即混合 js + 模板语言。


另一方面,缓冲代码作为 javascript 执行(首先对其进行预处理以转义 html)。尽管根据您放入的代码,它似乎有不同的行为。

例如,据说这样:

p='Test' + ' concatenation'
Run Code Online (Sandbox Code Playgroud)

将会导致Test concatenation

但现在,你可以这样做:

p=(function() { return 'Does this really work ?! It seems so'; }())
Run Code Online (Sandbox Code Playgroud)

它将导致Does this really work ?! It seems so.

它只是评估您的代码并转义 html。