我正在尝试使用预编译的 dust 模板测试简单的客户端渲染,但是当我尝试渲染时,dust 提示它找不到我的模板:
[DUST WARN]: Chunk error [Error: Template Not Found: basicName] thrown. Ceasing to render this template.
我的页面是这样的:
<!DOCTYPE html>
<html lang="en-US">
<head>
<script type="text/javascript" src="dust-full-2.4.js"></script>
<script type="text/javascript" src="basicName.js"></script>
</head>
<body>
<div id="dustContainer"></div>
<script>
var json_payload = { "name": {
"firstName" : "Brock",
"lastName" : "Sampson"
}};
var dustContainerDiv = document.getElementById("dustContainer");
dust.render("basicName", json_payload, function(err, out) {
dustContainerDiv.innerHTML = out;
});
</script>
</body>
</html>
还有我的模板文件(basicName.tl):
<p>{name.firstName}</p><p>{name.lastName}</p>
编译为此(basicName.js):
(function(){dust.register("basicName.tl",body_0);function body_0(chk,ctx){return chk.write("<p>").reference(ctx.getPath(false, ["name","firstName"]),ctx,"h").write("</p><p>").reference(ctx.getPath(false, ["name","lastName"]),ctx,"h").write("</p>");}return body_0;})();
我已经使用客户端模板编译测试了相同的模板/有效负载/html,一切正常。为了能够使用预编译模板,我缺少什么?
最佳答案
如果仔细查看编译后的灰尘模板,有一行代码:
... dust.register("basicName.tl", ...
这行代码将键“basicName.tl”下的已编译模板添加到dust.cache
中。
在引擎盖下 dust.render
将尝试在 dust.cache
中找到给定的模板名称
下面的代码将无法工作,因为 dust 在 dust.cache
中找不到“basicName”模板:
dust.render("basicName", json_payload, function(err, out) {
...
这样调用应该可行:
dust.render("basicName.tl", json_payload, function(err, out) {
...
关于javascript - 预编译模板的 Dust.js 客户端渲染问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25140113/