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("");
}
<!DOCTYPE html>
<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.filtersoptions.filters 中都存在过滤器时,filters 选项优先。

已弃用

此属性已弃用,取而代之的是 filters 选项