javascript - 在 Node 脚本中加载预编译的 Handlebars 模板?

标签 javascript node.js handlebars.js

我在 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/

相关文章:

javascript - 从 objectId 数组中移除一个 ObjectId

ruby-on-rails - 带 rails 的 Handlebars / mustache url_for

handlebars.js - handlebars.js 检查列表是否为空

ember.js - 如何在 Ember JS 中的 View 中使用自定义/动态属性?

c# - MVC 3 中可用的网球场接口(interface) : Errors and Questions

javascript - 选择选项时 dataList 自动填充其他字段 - AngularJs

javascript - Parsley JS 向父级添加错误/成功类

javascript - sql语句中的数组不适用于占位符?nodejs

javascript - 如何使用正则表达式获取 [0] 最后一次出现的位置?

node.js - 科阿的动态路线?