我在 email-template.hbs
有一个简单的 Handlebars 模板,我想预编译并加载到我的 app.js
文件中,而不从文件系统读取,并且每次 app.js
运行时编译它。
现在,我有一些看起来像这样的东西:
var handlebars = require('handlebars');
var fs = require('fs');
var source = fs.readFileSync('./email-template.hbs', 'utf-8');
var template = handlebars.compile(source);
我宁愿有这样的东西:
var handlebars = require('handlebars');
var template = require('email-template');
其中 email-template.js
是预编译的 email-template.hbs
模板。
最佳答案
我是 Node 和 Handlebars 的新手,也有同样的问题。
诀窍是使用 -c
标志预编译您的模板(预编译为 Node 的 CommonJS 模块格式,并为其提供所需的 handlebars 运行时模块的路径)。
鉴于您已经按照 setting up precompilation 的说明进行操作(npm install handlebars -g
),然后对于从 ./email-template.hbs
生成 email-template.js
的示例,请尝试在命令行上运行:
handlebars ./email-template.hbs -f ./email-template.js -c handlebars/runtime
...应该生成一个 email-template.js
var Handlebars = require("handlebars/runtime"); var template = Handlebars.template, templates = Handlebars.templates = Handlebars.templates || {};
在顶部。然后你可以像这样在你的 app.js
中使用它:
var Handlebars = require('handlebars/runtime');
var hbtemplate = require('./email-template.js');
// You don't even seem to need the "var hbtemplate =" above,
// as precompiling puts your template into the Handlebars object.
var template = Handlebars.templates['email-template'];
// ...then you can use template(data) to generate the HTML string
关于javascript - 在 Node 脚本中加载预编译的 Handlebars 模板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32316932/