fs.readFile 的替代方法,用于在 Express 中使用 res.json 时加载车把模板
Alternative to fs.readFile to load Handlebars template when using res.json in Express
我的目标是在我正在构建的Express 4应用程序中提供一个简单的实时api端点(使用res.json()
),该应用程序将Handlebars模板与数据一起编译并返回一个字符串,然后替换HTML客户端。
遇到的问题是,当我更喜欢使用与用于显示常规视图的机制相同的机制时,目前我必须使用 fs.readFile()
来读取模板的 Handlebars 内容。这可能吗?
这是一个基本示例;
数据终结点 (JSON):
{
"title": "Page Title"
}
模板.hbs
<h1>{{ title }}</h1>
实时终结点 (JSON)
{
"tpl": "<h1>Page Title</h1>
}
路由响应中的功能
var api = {};
fs.readFile('template.hbs', 'utf8', function(err, tpl) {
var template = hbs.compile(tpl);
// data here is the value returned from the data endpoint above
api.tpl = template(data);
res.json(api);
});
我甚至可能没有必要担心这一点,因为也许这就是 Handlebars 在引擎盖下所做的一切,但我只是想知道是否有我不知道的更简单的方法。
我建议你使用express-handlebars
来使用Handlebars作为你的渲染引擎。只需这样做:
const expressHandlebars = require('express-handlebars');
...
app.engine('handlebars', expressHandlebars({/* config */}));
app.set('view engine', 'handlebars');
现在,您的模板将使用车把进行渲染,假设您已为应用传递正确的配置选项。现在你可以只使用普通的 Express API,如下所示:
...
res.render('template', data, (err, html) => {
api.tpl = html;
res.json(api);
});
相关文章:
- 立即返回res.json响应
- 节点.js无法使用 res.json 设置标头错误
- fs.readFile 的替代方法,用于在 Express 中使用 res.json 时加载车把模板
- Express 4 Multer / req.body 和 res.json 未定义
- 如何在公共JS文件中使用通过Express res.render发送的JSON
- Express.js 中 res.send 和 res.json 之间的区别
- res.json在回调函数中不起作用
- Sailsjs-返回res.json();后继续执行;
- 为什么我不能内联调用res.json
- 以值为对象创建JSON格式的res.cookie
- node.js TypeError:路径必须是绝对的,或者指定根目录到 res.sendFile [无法解析 JSON]
- AngularJS控制器如何处理res.json(false)值
- Res.json阻塞了我的node/express服务器
- 从Node + Express API中提取使用res.json发送的信息
- 在nodejs应用中读取res.json
- 数组在res.json()中为空,但在res.json()调用之前和之后都存在
- 猫鼬.找到一个请求.参数数组?res.json是每个值和计数的数组
- 如何将res.json作为回调函数传递
- 我可以使用'res.sendFile'和& # 39;res.json& # 39;在一起
- 优先顺序Javascript/PHP/Jquery Json-从用户那里获取浏览器res