如何在 dust.js 中包含原始的、未编译的部分?
How do you include a raw, uncompiled partial in dust.js?
我的 dust 工作得相当好,但我希望能够包含一个文件,例如 css 文件,而无需编译和渲染它。
看来我可能需要创建一个加载文件并直接注册内容的 onLoad 处理程序。
有没有办法在灰尘中做到这一点?
您可以利用 Dust 对流和承诺的原生支持,使文件包含变得非常好。具体实现取决于你是运行服务器端还是客户端的Dust,但思路是一样的。
编写一个加载文件的帮助程序,returns 为结果编写一个 Stream 或 Promise。 Dust 会将其异步渲染到模板中,因此执行文件 I/O 不会阻止处理模板的其余部分。
为简单起见,我将编写一个上下文助手,但您也可以将其设为 Dust 全局助手。
{
"css": function(chunk, context, bodies, params) {
// Do some due diligence to sanitize paths in a real app
var cssPrefix = '/css/';
var path = cssPrefix + context.resolve(params.path);
return $.get(path);
}
}
然后像这样使用它:
{#css path="foo/bar.css"}{.}{/css}
或服务器的流媒体版本:
{
"css": function(chunk, context, bodies, params) {
// Do some due diligence to sanitize paths in a real app
var cssPrefix = '/css/';
var path = cssPrefix + context.resolve(params.path);
return fs.createReadStream(path, "utf8");
}
}
我的 dust 工作得相当好,但我希望能够包含一个文件,例如 css 文件,而无需编译和渲染它。
看来我可能需要创建一个加载文件并直接注册内容的 onLoad 处理程序。
有没有办法在灰尘中做到这一点?
您可以利用 Dust 对流和承诺的原生支持,使文件包含变得非常好。具体实现取决于你是运行服务器端还是客户端的Dust,但思路是一样的。
编写一个加载文件的帮助程序,returns 为结果编写一个 Stream 或 Promise。 Dust 会将其异步渲染到模板中,因此执行文件 I/O 不会阻止处理模板的其余部分。
为简单起见,我将编写一个上下文助手,但您也可以将其设为 Dust 全局助手。
{
"css": function(chunk, context, bodies, params) {
// Do some due diligence to sanitize paths in a real app
var cssPrefix = '/css/';
var path = cssPrefix + context.resolve(params.path);
return $.get(path);
}
}
然后像这样使用它:
{#css path="foo/bar.css"}{.}{/css}
或服务器的流媒体版本:
{
"css": function(chunk, context, bodies, params) {
// Do some due diligence to sanitize paths in a real app
var cssPrefix = '/css/';
var path = cssPrefix + context.resolve(params.path);
return fs.createReadStream(path, "utf8");
}
}