有没有更好的方法将多行缓冲文本输出到代码块中?
pre: code.language-html
= '<div>\n'
= ' <p>Hello</p>\n'
= '</div>'
格式化这个并不好,如果我不必在每一行的末尾放置/n
并用引号括起每一行,我希望如此。
这样做的更好方法是什么?
答案 0 :(得分:0)
目前无法在Pug (formerly Jade)中使用此功能,但有一些解决方法。
首先,你的代码可以工作,但你不能跨行破坏表达式:
pre: code.language-html
= new MyClass().render('<div>\n' // SYNTAX ERROR!!
= ' <p>Hello</p>\n'
= '</div>')
因此,您可以将方法用于简单的单行表达式,但对于多行函数,对象,数组等,这将失败。
或者,您可以在 unbuffered 代码中完成所有工作,然后在缓冲代码中引用它。
-
var output = new MyClass().render('<div>\n'
+ ' <p>Hello</p>\n'
+ '</div>')
-
let es6output = new MyClass().render(`
<div>
<p>Hello</p>
</div>
`) // if you want template literals
pre: code.language-html
= output // unescaped (converts `<` to `<`)
!= output // escaped
您正在寻找的功能显然是Pug语法的一个很好的补充。实际上已经创建了一个问题:https://github.com/pugjs/pug/issues/2371