在生产代码中使用text / html javascript模板

时间:2010-09-01 08:59:19

标签: javascript templates

是否有人在生产代码中实施了John Resig's micro-templating?特别是我想知道用<script type="text/html">嵌入模板是否会导致任何问题。

更多信息:这是我担心的事情:

  • 我的用户主要是在企业环境中 - 可能是一个不寻常的代理服务器破坏或剥离模板
  • 嵌入式模板似乎无法通过W3C验证。例如,如果IE的下一个版本决定它不喜欢它们会怎么样?

4 个答案:

答案 0 :(得分:1)

虽然我没有使用@ jeresig的微模板,但我确实使用了&lt;script type="text/html"&gt;。我已经在几个(虽然是基本的)生产网站中使用它而没有任何问题。 HTML5 spec本身指的是类似的东西(接近我链接的部分的末尾)。 AFAIK块仅在MIME类型是可识别的脚本类型时执行,否则块只是文档的一部分。

答案 1 :(得分:1)

我放弃了通过scripttags内联模板,因为我的视图层会创建冗余的重复脚本模板。相反,我将模板放回到JavaScript中作为字符串:

var tpl = ''.concat(
    '<div class="person">',
        '<span class="name">${name}</span>',
        '<span class="lastname">${lastName}</span>',
    '</div>'
);

我使用字符串concat技巧,所以我可以使模板字符串可读。这种技巧有变化,如数组连接或简单的附加连接。在任何情况下,内联脚本模板都可以正常工作,但是在php / jsp / asp视图层中,你可能会创建冗余的重复脚本模板,除非你做更多的工作来避免它。

此外,这些模板变得相当复杂,你需要添加的逻辑越多,所以我进一步观察并找到了mustache.j的imo。远远优于并保持JavaScript范围内的逻辑(条件和动态变量定义)。

另一种选择是通过ajax检索模板字符串,在这种情况下,您可以将每个模板放在其自己的文件中,并简单地授予它一个.tpl扩展名。你唯一需要担心的是http请求往返,这对于小的.tpl文件来说不应该花太长时间,而且是imo。太微不足道了。

答案 2 :(得分:0)

实际上,我确实很有效。虽然只适用于webkit驱动的浏览器,但不能保证其他人。但是你期待什么问题呢?方法很简单,我想不出它会如何破坏。

答案 3 :(得分:0)

如果您正在使用jQuery,我可以推荐jQuery模板:

http://github.com/nje/jquery-tmpl

我认为它应该是jQuery 1.5中的introduced officially

顺便说一句。我认为Resigs脚本和jQuery模板都依赖于使用innerHTML,所以只要它在您的浏览器中有效就可以了。