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

jquery模板引擎[关闭]

  •  201
  • Maurice  · 技术社区  · 17 年前

    我正在寻找一个模板引擎来使用客户端。我尝试过一些类似于JSRepeater和JQuery模板的方法。虽然它们在Firefox中看起来工作正常,但在IE7中,当涉及到呈现HTML表时,它们似乎都崩溃了。

    我还查看了microsoftajaxtemplates.js(来自 http://www.codeplex.com/aspnet/Release/ProjectReleases.aspx?ReleaseId=16766 )但事实证明,这也有同样的问题。

    有关于其他模板引擎的建议吗?

    19 回复  |  直到 9 年前
        1
  •  108
  •   alex    14 年前

    查看Rick Strahl的职位 Client Templating with jQuery . 他研究了JTemplates,但随后为John Resig的 micro-templating solution ,甚至改进了一些。比较好,样品多。

        2
  •  46
  •   Tom Leys    14 年前

    只是做了一些研究,我会用 jquery-tmpl . 为什么?

    1. 这是约翰·雷西格写的。
    2. 它将由核心jquery团队作为“官方”插件进行维护。 编辑:jquery团队已经否决了这个插件。
    3. 它在简单性和功能性之间达到了完美的平衡。
    4. 它有一个非常干净和深思熟虑的语法。
    5. 它默认为HTML编码。
    6. 它具有很高的可扩展性。

    这里更多: http://forum.jquery.com/topic/templating-syntax

        3
  •  23
  •   KevBurnsJr    16 年前

    JQOTE: http://aefxx.com/jquery-plugins/jqote/

    有人拿了resig的微模板解决方案并将其打包到jquery插件中。

    我会用这个直到resig释放他自己的(如果他释放自己的)。

    谢谢你的小费,伊比。

        4
  •  17
  •   gnat Nat Poor    9 年前

    jQuery Nano :

    模板引擎

    基本用法

    假设您有以下JSON响应:

    data = {
      user: {
        login: "tomek",
        first_name: "Thomas",
        last_name: "Mazur",
        account: {
          status: "active",
          expires_at: "2009-12-31"
        }
      }
    }
    

    你可以做到:

    nano("<p>Hello {user.first_name} {user.last_name}! Your account is <strong>{user.account.status}</strong></p>", data)
    

    然后准备好字符串:

    <p>Hello Thomas Mazur! Your account is <strong>active</strong></p>
    

    测试页面…

        5
  •  13
  •   jonsequitur    15 年前

    jquery tmpl将位于jquery 1.5开始的jquery核心中:

    http://blog.jquery.com/2010/10/04/new-official-jquery-plugins-provide-templating-data-linking-and-globalization/

    官方文件如下:

    http://api.jquery.com/category/plugins/templates/


    编辑:它被排除在jquery 1.5之外,现在将由jquery ui团队进行协调,因为它将是即将到来的jquery ui网格的依赖项。

    http://blog.jquery.it/2011/04/16/official-plugins-a-change-in-the-roadmap/

        6
  •  11
  •   Chris Vest    17 年前

    不确定它如何处理您的特定问题,但还有 PURE 模板引擎。

        7
  •  7
  •   Eran Medan    14 年前

    这取决于你如何定义“最好”,请看我的帖子 here 关于话题

    如果你寻找 最快的 ,这是一个不错的 benchmark 看来 DoT 赢了,把其他人都甩在后面

    如果你在寻找最 官方的 jquery插件,这是我发现的

    第一部分:jquery模板

    贝塔, temporarily-official jquery模板插件是这样的 http://api.jquery.com/category/plugins/templates/

    但很明显,不久前它决定保留在beta版本中…

    注意:jquery团队已经决定不让这个插件通过测试版。 它不再被积极开发或维护。文档 暂时留在这里(供参考),直到合适的 替换模板插件已就绪。

    第二部分:下一步

    这个 new roadmap 似乎是为了开发一套新的插件, JSRead (独立于dom甚至jquery模板呈现引擎)和 JSVIEW 有一些很好的数据绑定和观察/观察模式实现

    这是关于这个主题的博客文章

    http://www.borismoore.com/2011/10/jquery-templates-and-jsviews-roadmap.html

    这是最新的消息来源

    其他资源

    注意,它甚至还不是beta版本,只是一个路线图项,但似乎是成为模板和UI绑定的官方jquery/jquery ui扩展的一个很好的候选者。

        8
  •  5
  •   Ajay Patel    14 年前

    http://garann.github.com/template-chooser/ 这个链接对于选择一个javascript基本模板非常有用。

        9
  •  4
  •   molokoloco    14 年前

    只不过是愚蠢的^^

    // LighTest TPL
    $.tpl = function(tpl, val) {
        for (var p in val)
            tpl = tpl.replace(new RegExp('({'+p+'})', 'g'), val[p] || '');
        return tpl;
    };
    // Routine...
    var dataObj = [{id:1, title:'toto'}, {id:2, title:'tutu'}],
        tplHtml = '<div>N°{id} - {title}</div>',
        newHtml    = '';
    $.each(dataObj, function(i, val) {
         newHtml += $.tpl(tplHtml, val);
    });
    var $newHtml = $(newHtml).appendTo('body');
    

    http://jsfiddle.net/molokoloco/w8xSx/ ;)

        10
  •  3
  •   levik    17 年前

    这不是特定于JSQuery的,但这里有一个基于JS的模板库,由Google作为开放源代码发布:

    http://code.google.com/p/google-jstemplate/

    这允许使用dom元素作为模板,并且是可重入的(因为模板呈现的输出仍然是可以用不同的数据模型重新呈现的模板)。

        11
  •  2
  •   Yann    15 年前

    其他人已经指出jquery tmpl,我已经对这些答案投了赞成票。但一定要看看Github Forks。

    这里有一些重要的修正和有趣的特性。 http://github.com/jquery/jquery-tmpl/network

        12
  •  1
  •   morgancodes    17 年前

    约翰·雷西格在他的博客上发表了一篇文章。 http://ejohn.org/blog/javascript-micro-templating/

        13
  •  1
  •   mckamey    17 年前

    如果您在.NET Framework 2.0/3.5中工作,那么您应该看看由实现的JBST。 http://JsonFx.net . 它有一个客户端模板化解决方案,该解决方案具有熟悉的JSP/ASP语法,但在构建时对不需要在运行时解析的可压缩缓存模板进行预编译。它与jquery和其他javascript库很好地配合使用,因为模板本身被编译为纯javascript。

        14
  •  1
  •   EShy    16 年前

    我使用jtemplates jquery插件,但是性能非常差。我切换到Trimpath( http://code.google.com/p/trimpath/wiki/JavaScriptTemplates )性能好得多。我没有注意到IE7或FF有任何问题。

        15
  •  1
  •   Donovan Walker    15 年前

    对于非常简单的工作,jquery tmpl是足够的,但在某些情况下,它要求数据知道如何格式化自己(糟糕的事情!).

    如果你想找一个功能更全面的模板插件,我建议 Orange-J . 它的灵感来自弗里马克。它支持if,else,循环对象和数组,内联javascript,包括模板中的模板,并具有优秀的输出格式选项(maxlen、wordboundary、htmlentities等)。

    哦,简单的语法。

        16
  •  0
  •   studgeek    15 年前

    您可能需要考虑一下如何设计模板。

    许多列出的模板解决方案(jqote、jquery tmpl、jtemplates)的一个问题是,它们要求您在HTML中插入非HTML,在HTML工具中或在HTML设计器的开发过程中,这可能是一个难题。我个人不喜欢这种方法,尽管它有其优点和缺点。

    还有另一类模板方法使用普通HTML,但允许您使用元素属性、CSS类或外部映射指示数据绑定。

    Knockout 这是一个很好的例子,但我自己并没有使用它,所以我将把它留给投票决定别人是否喜欢它。至少在我有时间多玩之前。

    PURE 另一个答案是这种方法的另一个例子。

    作为参考,您也可以查看 chain.js 但自最初发布以来,它似乎没有得到太多的更新。有关它的更多背景信息,请参见 http://javascriptly.com/2008/08/a-better-javascript-template-engine/ .

        17
  •  0
  •   s-sharma    13 年前

    Dropbox 使用 John Resig's template engine 在网站上。他们有点修改过你可以签这个 js file Dropbox的。在这个文件中搜索tmpl,您将得到模板引擎的代码。

    谢谢。希望它对某人有用。

        18
  •  0
  •   Bny    12 年前

    我目前正在使用一个多HTML模板框架。这个框架使在您的DOM中导入模板化数据变得容易得多。也是很好的MVC建模。

    http://www.enfusion-framework.org/ (看看样品!)

        19
  •  -1
  •   mpapis    15 年前

    还有对pure by beebole-jquery pure html模板的重写- https://github.com/mpapis/jquery-pure-templates

    它应该允许更多的自动呈现,主要是使用jquery选择器,更重要的是它不需要把花哨的东西放入HTML。