代码之家  ›  专栏  ›  技术社区  ›  minimalis

在生产代码中使用文本/HTML javascript模板

  •  0
  • minimalis  · 技术社区  · 15 年前

    有人执行了吗 John Resig's micro-templating 在生产代码中?特别是,我想知道是否嵌入模板 <script type="text/html"> 引起了任何问题。

    更多信息:我担心的是:

    • 我的用户大多在公司环境中-可能是一个不寻常的代理服务器损坏或删除模板
    • 嵌入的模板似乎没有通过W3C验证。例如,如果下一个版本的IE决定它不喜欢它们呢?
    4 回复  |  直到 11 年前
        1
  •  1
  •   BGerrissen    15 年前

    我放弃了通过脚本标签嵌入模板,因为我的视图层将创建冗余的重复脚本模板。相反,我把模板作为字符串放回了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
  •  1
  •   CRABOLO    11 年前

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

        3
  •  0
  •   Alex Wayne    15 年前

    我有,而且效果很好。虽然只有WebKit支持的浏览器,所以不能为其他浏览器提供担保。但是你期待的是什么问题呢?这个方法很简单,我想不出它会怎么坏。

        4
  •  0
  •   sewa    15 年前

    如果您使用jquery,我可以推荐jquery模板:

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

    我想应该是 introduced officially 在jQuery 1.5中

    顺便说一下,我认为resigs脚本和jquery模板都依赖于使用 innerHTML ,只要在浏览器中工作正常,您就应该没事。