这是我第一次涉足客户端模板,我想确保我理解并正确使用它.阅读这篇LinkedIn工程博客后,我决定选择dust.js而不是小胡子或把手.请注意,这个stackoverflow帖子回答了我的许多问题,但我仍然有一些我想澄清的事情.
在我工作的环境中,我无法访问服务器端的任何内容,因此我创建的所有内容都必须能够完全在客户端的浏览器中运行.对于此示例,我将尝试从LinkedIn Dust Tutorial重新创建此代码示例.
我包括dust-full.js而不是dust-core.js因为我要动态编译模板:
这是HTML:
和JavaScript(使用jQuery):
$(document).ready(function () { var data = { "title": "Famous People", "names" : [{ "name": "Larry" },{ "name": "Curly" },{ "name": "Moe" }] } var source = $("#entry-template").html(); var compiled = dust.compile(source, "intro"); dust.loadSource(compiled); dust.render("intro", data, function(err, out) { $("#output").html(out); }); });
这似乎工作正常,你可以在这个jsfiddle中看到.
几个问题:
为什么模板应包含在脚本标记中?为什么不将它包含在id ="entry-template"的div中,然后在dust.render()中替换html,就像在这个修改过的小提琴中一样?
什么" dust.loadSource(编译); "做什么?它在文档中说"如果你将'编译'字符串作为你加载的JS脚本块的一部分,那么'intro'模板将被定义和注册.如果你想立即执行它,那么"调用它,但我不明白这意味着什么.我注意到,如果我删除该行然后它不起作用,所以我想理解它.
在我对我的模板感到满意并最终确定之后,我应该如何编译它以便导入较轻的dust-core.js而不是在每次加载页面时由浏览器编译?这样做是否有显着优势,或者我应该像dust-full.js一样离开?
更一般地说,这看起来像是一个适当/有用的方法来实现灰尘(或任何模板框架)或我离开某处?
提前致谢.