API 参考
本页面详细介绍了如何使用 JavaScript API 渲染 Pug。
提示
Pug 可在您的 Web 浏览器的控制台中使用!要测试 Pug 的 API(如本页面所述),请尝试输入
pug.render('p Hello world!');
选项
所有 API 方法都接受以下选项集
- filename: string
- 正在编译的文件的名称。用于异常,并且是相对
include
\s 和extend
\s 所必需的。默认为'Pug'
。 - basedir: string
- 所有绝对包含的根目录。
- doctype: string
- 如果
doctype
未指定为模板的一部分,您可以在此处指定它。有时很有用,可以获取自闭合标签并删除布尔属性的镜像。有关更多信息,请参阅 doctype 文档。 - pretty: boolean | string
- [已弃用。]使用
' '
作为缩进来向结果 HTML 添加空格,以便人类更容易阅读。如果指定了一个字符串,则将使用该字符串作为缩进(例如'\t'
)。我们强烈建议不要使用此选项。它经常在模板中创建细微的错误,因为它改变了空格的解释和渲染方式,因此此功能将被删除。默认为false
。 - filters: object
- 自定义过滤器 的哈希表。默认为
undefined
。 - self: boolean
- 使用
self
命名空间来保存局部变量。它将加快编译速度,但是您必须编写self.variable
而不是variable
才能访问局部变量对象的属性。默认为false
。 - debug: boolean
- 如果设置为
true
,则会将标记和函数体记录到 stdout。 - compileDebug: boolean
- 如果设置为
true
,则函数源代码将包含在编译后的模板中,以便获得更好的错误消息(有时在开发中很有用)。默认情况下启用,除非在生产模式下与 Express 一起使用。 - globals: Array<string>
- 添加一个全局名称列表,以便在模板中访问。
- cache: boolean
- 如果设置为
true
,则编译函数会被缓存。filename
必须设置为缓存键。仅适用于render
函数。默认为false
。 - inlineRuntimeFunctions: boolean
- 内联运行时函数,而不是从共享版本中
require
它们。对于compileClient
函数,默认值为true
(因此不必包含运行时)。对于所有其他编译或渲染类型,默认值为false
。 - name: string
- 模板函数的名称。仅适用于
compileClient
函数。默认为'template'
。
方法
pug.compile(source, ?options)
将 Pug 模板编译为一个函数,该函数可以用不同的局部变量多次渲染。
- source: string
- 要编译的源 Pug 模板
- options: ?options
- 一个选项对象
- returns: function
- 一个函数,用于从包含局部变量的对象生成 HTML
var pug = require('pug');
// Compile a function
var fn = pug.compile('string of pug', options);
// Render the function
var html = fn(locals);
// => '<string>of pug</string>'
pug.compileFile(path, ?options)
将 Pug 模板从文件编译为一个函数,该函数可以用不同的局部变量多次渲染。
- path: string
- Pug 文件的路径
- options: ?options
- 一个选项对象
- returns: function
- 一个函数,用于从包含局部变量的对象生成 HTML
var pug = require('pug');
// Compile a function
var fn = pug.compileFile('path to pug file', options);
// Render the function
var html = fn(locals);
// => '<string>of pug</string>'
pug.compileClient(source, ?options)
将 Pug 模板编译为 JavaScript 字符串,该字符串可用于客户端。
- source: string
- 要编译的 Pug 模板
- options: ?options
- 一个选项对象
- returns: string
- 表示函数的 JavaScript 字符串
var pug = require('pug');
// Compile a function
var fn = pug.compileClient('string of pug', options);
// Render the function
var html = fn(locals);
// => 'function template(locals) { return "<string>of pug</string>"; }'
pug.compileClientWithDependenciesTracked(source, ?options)
与 compileClient
相同,除了此方法返回以下形式的对象
{
'body': 'function (locals) {...}',
'dependencies': ['filename.pug']
}
只有在需要 dependencies
来实现诸如监视 Pug 文件更改之类的功能时,才应使用此方法。
pug.compileFileClient(path, ?options)
将 Pug 模板文件编译为可用于客户端的 JavaScript 字符串。
- path: string
- Pug 文件的路径
- options: ?options
- 一个选项对象
- options.name: string
- 如果在选项对象上传递
.name
属性,它将用作客户端模板函数的名称。
- returns: string
- JavaScript 函数主体。
首先,我们的模板文件。
h1 This is a Pug template
h2 By #{author}
然后,我们将 Pug 文件编译为函数字符串。
var fs = require('fs');
var pug = require('pug');
// Compile the template to a function string
var jsFunctionString = pug.compileFileClient('/path/to/pugFile.pug', {name: "fancyTemplateFun"});
// Maybe you want to compile all of your templates to a templates.js file and serve it to the client
fs.writeFileSync("templates.js", jsFunctionString);
以下是输出函数字符串的外观(写入 templates.js
)。
function fancyTemplateFun(locals) {
var buf = [];
var pug_mixins = {};
var pug_interp;
var locals_for_with = (locals || {});
(function (author) {
buf.push("<h1>This is a Pug template</h1><h2>By "
+ (pug.escape((pug_interp = author) == null ? '' : pug_interp))
+ "</h2>");
}.call(this, "author" in locals_for_with ?
locals_for_with.author : typeof author !== "undefined" ?
author : undefined)
);
return buf.join("");
}
<html>
<head>
<script src="/templates.js"></script>
</head>
<body>
<h1>This is one fancy template.</h1>
<script type="text/javascript">
var html = window.fancyTemplateFun({author: "enlore"});
var div = document.createElement("div");
div.innerHTML = html;
document.body.appendChild(div);
</script>
</body>
</html>
pug.render(source, ?options, ?callback)
- source: string
- 要渲染的源 Pug 模板
- options: ?options
- 一个选项对象,也用作局部变量对象
- callback: ?function
- 接收渲染结果的 Node.js 样式回调。此回调被同步调用。
- returns: string
- 生成的 HTML 字符串
var pug = require('pug');
var html = pug.render('string of pug', options);
// => '<string>of pug</string>'
pug.renderFile(path, ?options, ?callback)
- path: string
- 要渲染的 Pug 文件的路径
- options: ?options
- 一个选项对象,也用作局部变量对象
- callback: ?function
- 接收渲染结果的 Node.js 样式回调。此回调被同步调用。
- returns: string
- 生成的 HTML 字符串
var pug = require('pug');
var html = pug.renderFile('path/to/file.pug', options);
// ...
属性
pug.filters
一个 自定义过滤器 的哈希表。
此对象具有与 filters
选项 相同的语义,但全局应用于所有 Pug 编译。当 pug.filters
和 options.filters
中都存在过滤器时,filters
选项优先。
已弃用
此属性已弃用,取而代之的是 filters
选项。