Pug CLI - 将模板编译为可导出的js函数

时间:2018-03-11 01:52:42

标签: javascript node.js pug

我正在尝试使用Pug作为发送交易电子邮件的模板引擎。我想在构建步骤中编译它们,然后只需要/导入我的代码中的函数(以避免在线编译)。

我正在使用Pug CLI来编译模板。

pug ./src/emails/pug --client --pretty --no-debug --out ./src/emails/tpl

这会在out目录中创建看起来像这样的.js文件。

function pug_escape(e) {
    var a = "" + e,
        t = pug_match_html.exec(a);
    if (!t) return e;
    var r, c, n, s = "";
    for (r = t.index, c = 0; r < a.length; r++) {
        switch (a.charCodeAt(r)) {
            case 34:
                n = "&quot;";
                break;
            case 38:
                n = "&amp;";
                break;
            case 60:
                n = "&lt;";
                break;
            case 62:
                n = "&gt;";
                break;
            default:
                continue
        }
        c !== r && (s += a.substring(c, r)), c = r + 1, s += n
    }
    return c !== r ? s + a.substring(c, r) : s
}
var pug_match_html = /["&<>]/;

function template(locals) {
    var pug_html = "",
        pug_mixins = {},
        pug_interp;;
    var locals_for_with = (locals || {});
    (function(emailTo) {
        var pug_indent = [];
        pug_html = pug_html + "\u003Ch1\u003EYou sent money to " + (pug_escape(null == (pug_interp = emailTo) ? "" : pug_interp)) + "\u003C\u002Fh1\u003E";
    }.call(this, "emailTo" in locals_for_with ? locals_for_with.emailTo : typeof emailTo !== "undefined" ? emailTo : undefined));;
    return pug_html;
}

如何将此功能作为模块导入,以便我可以像这样使用它?

import sendEmail from './tpl/email'
sendEmail(data)

是否可能,或者我遗漏了一些关于我应该如何编译和使用函数的内容?

2 个答案:

答案 0 :(得分:0)

我碰巧使用webpack并找到了pug-loader,它可以满足我的需要(将.pug文件作为函数加载)。

如果某人有非webpack答案,我可以将其标记为正确,我将暂时保持此状态。

答案 1 :(得分:0)

我一直在四处寻找,因为我喜欢 Mustache.js 的工作方式,只是不喜欢与 Pug 相比的间隙。客户端渲染也可以使用 Puglatizer 来实现,但是,它在某种程度上已经死了。