如何高效地实现客户端JavaScript模板部分?
我想建立我自己的,但我不确定最好的方式来做到这一点。部分是一个模板,它只是另一个较大模板的一部分,可以随意插入到其他多个模板中。模板本身是相当基础的,只是字符串交换和连接,但客户端部分让我有点难住。如何高效地实现客户端JavaScript模板部分?
下面是我想到的几种方法:
1, 我可以写通过Ajax加载的谐音成某种形式的本地存储我想这需要特定的部分一个javascript辅助函数,以及所有后续模板会首先查看本地存储。我认为这种方法并不是很安全,因为本地存储并不总能得到保证。如果我不能将它们保存到本地存储中,partials会导致太多的ajax调用。
2,我可以将它们全部放入我的主html文件中的脚本标记中。这将工作得相当好,尤其是使用head.js(以启用并行加载脚本标记),但仍然 - 我认为每个脚本标记是对服务器的单独调用吗?这并不能完全改善这种情况。 3,我可以把所有的模板放到一个脚本标记(或者我猜测的html)中,并通过某种分隔符手动过滤......“#template1(blabla template1 string)#template2(blablabla template2 string)并把这些字符串变成全局变量 这只会导致一个单一的调用服务器,其余的都是在客户端上完成的。代码非常复杂
我用来指定模板调用和按需加载规范/重写jQuery模板的方法是管道化。
请参阅(早期)draft spec的第9部分,并在底部查看conformance suite tests,以获得自定义按需模板加载的示例(测试用例“主要调用和加载即时!”是相关的)。
基本的要点是插件加载器(用JS编写)能够在解析和编译之间挂钩来检查解析树。插件传递获取对象映射模板名称来解析树。如果他们看到任何部分模板选择器(使用你的说法),他们可以尝试使用Node.js上的AJAX调用或文件I/O加载任何未解析的模板,并将这些部分添加到输入对象以使编译器编译just加载部分以及公共模板。
效率方面,请参阅benchmarks。我正在将代码迁移到github:https://github.com/mikesamuel/jquery-jquery-tmpl-proposal以防合作。
你想要mustache.js吗? – Nerian 2011-05-07 11:52:53
您也可以从underscore.js中的基本模板引擎开始并改进它。 – dwarfy 2011-05-07 11:56:25
iCanHaz.js使用''干净地存储它的模板...你可以把它们放在1个html文件中? – dwarfy 2011-05-07 12:01:54