ChatGPT解决这个技术问题 Extra ChatGPT

jQuery模板引擎[关闭]

关闭。此问题不符合 Stack Overflow 准则。它目前不接受答案。我们不允许提出有关书籍、工具、软件库等建议的问题。您可以编辑问题,以便可以用事实和引用来回答它。 5年前关闭。改进这个问题

我正在寻找一个模板引擎来使用客户端。我一直在尝试一些像 jsRepeater 和 jQuery 模板。虽然它们在 FireFox 中似乎工作正常,但在 IE7 中,当归结为呈现 HTML 表格时,它们似乎都崩溃了。

我还查看了 MicrosoftAjaxTemplates.js(来自 http://www.codeplex.com/aspnet/Release/ProjectReleases.aspx?ReleaseId=16766),但结果发现它有同样的问题。

关于使用其他模板引擎的任何建议?

我想两次提出这个问题:)
我会检查非常好的(但预测试版)JSViews 和 JSRender,看起来像是一个潜在的官方 JQuery/UI 模板引擎(至少这是路线图所说的)
JsRender 现在有一个公开测试版候选人:borismoore.com/2012/03/…
我现在正在使用 DoT 模板,性能良好,并且像 Mustache 一样表示法

a
alex

查看 Rick Strahl 的帖子 Client Templating with jQuery。他探索了 jTemplates,但随后为 John Resig 的 micro-templating solution 做了一个更好的案例,甚至对其进行了一些改进。很好的比较,大量的样本。


github.com/jquery/jquery-tmpl 是 Resig 模板插件的实际存储库。
@Thr4wn,repro 的来源明显是链接文章中讨论的库。不过,两者都是 Resig 的,当然。
@Frank“repro 的来源明显是链接文章中讨论的图书馆”嗯嗯?说什么?完全不知道你的意思是什么。
@Mark:他的意思是“明显不同”。
我还没有看到任何用这个构建复杂表单的例子。有没有人探索过添加一行(整个模板的某个部分)以容纳表单绑定对象数组中的新元素需要什么?该模板将包括模板化数组的元素索引,并且可以正确序列化以进行 POST。但我很难想清楚。目标是类似于 InfoPath 的功能。 (我知道现有的各种信息路径功能和信息路径替代品。)
T
Tom Leys

刚刚对此进行了一些研究,我将使用 jquery-tmpl。为什么?

这是约翰·雷西格写的。它将由核心 jQuery 团队作为“官方”插件维护。编辑:jQuery 团队已弃用此插件。它在简单性和功能性之间取得了完美的平衡。它有一个非常干净和深思熟虑的语法。它默认为 HTML 编码。它具有高度可扩展性。

更多信息:http://forum.jquery.com/topic/templating-syntax


+1。但我用的是 Rick Strahl 的。因为它很小,很适合我的目的。
刚刚宣布这是现在的官方插件
不幸的是,它是 depreciated。任何叉子?
现在的情况在 2012 年是否发生了变化,我的意思是,是否有更好的解决方案来使用在 resig 的原始脚本之上开发的库来进行模板化?
@OnesimusUnbound 它已被 JS Render 超级种子。 github.com/BorisMoore/jsrender
K
KevBurnsJr

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

有人拿了 Resig 的微模板解决方案,打包成一个 jQuery 插件。

在 Resig 发布他自己的(如果他发布他自己的)之前,我将一直使用它。

感谢您的提示,ewbi。


这现在变成了 jQote2:aefxx.com/jquery-plugins/jqote2
g
gnat

jQuery Nano

模板引擎基本用法假设您有以下 JSON 响应:data = { user: { login: "tomek", first_name: "Thomas", last_name: "Mazur", account: { status: "active", expires_at: "2009-12 -31" } } } 你可以: nano("

你好 {user.first_name} {user.last_name}!你的帐户是 {user.account.status}

" , data) 并且你准备好了字符串:

Hello Thomas Mazur!您的帐户活动

测试页面...


这不做控制结构(ifs 和循环)
j
jonsequitur

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 Grid 的依赖项。

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


C
Chris Vest

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


除了其局限性,PURE 非常易于使用
@Jader,什么限制是最痛苦的?
@Mic PURE 受设计限制。在服务器端模板引擎中,您不必坚持使用有效的 HTML,但 PURE 是基于 HTML 的。但我认为有些怪癖会允许另一个 javascript 模板引擎与服务器端引擎一样强大。
@Jader,仅适用于 HTML。但我不明白你所说的怪癖和另一个引擎是什么意思。
@Mic PURE 应该必须从头开始重写以允许包含一些功能。要允许无效的 HTML 模板,您应该使用具有不同于 text/javascript 的属性 typescript 标记。这是一个允许无效 HTML 的“怪癖”。
E
Eran Medan

这取决于您如何定义“最佳”,请参阅我关于该主题的帖子 here

如果您寻找最快,这是一个不错的 benchmark,似乎 DoT 获胜,其他所有人都落后了

如果您正在寻找最官方的 JQuery 插件,这是我发现的

第一部分:jQuery 模板

测试版,temporarily-official JQuery 模板插件是这个http://api.jquery.com/category/plugins/templates/

但显然,不久前它决定将其保留在 Beta 中......

注意:jQuery 团队决定不让这个插件超过 beta。它不再被积极开发或维护。文档暂时保留在这里(供参考),直到准备好合适的替换模板插件。

第二部分:下一步

new roadmap 的目标似乎是一组新的插件,JSRender(独立于 DOM 甚至 JQuery 模板渲染引擎)和 JSViews,它们有一些不错的数据绑定和观察器/ 可观察模式实现

这是有关该主题的博客文章

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

这是最新的来源

JSViews https://github.com/BorisMoore/jsviews

JSRender https://github.com/BorisMoore/jsrender

其他资源

关于该主题的精彩演示 http://www.slideshare.net/BorisMoore/jsviews-next-generation-jquery-templates

工作演示:http://borismoore.github.com/jsviews/demos/index.html

请注意,它甚至还不是 beta 版,只是一个路线图项目,但似乎是成为模板和 UI 绑定的官方 JQuery/JQueryUI 扩展的不错选择


m
molokoloco

只做傻子^^

// 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/ ;)


l
levik

这不是特定于 jsquery 的,但这是 google 作为开源发布的基于 JS 的模板库:

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

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


Y
Yann

其他人指出了 jquery-tmpl,我赞成这些答案。但一定要看看 github forks。

那里有重要的修复和有趣的功能。 http://github.com/jquery/jquery-tmpl/network


有什么特别的分叉要查看修复吗?
TBH,有点乱……在快速浏览了更改并考虑到 appendto 是一家公司这一事实后,我选择了 github.com/appendto/jquery-tmpl。 YMMV
jquery-tmpl 已被折叠在官方 1.4.3 发行版中。
m
morgancodes

John Resig 在他的博客上发布了一个。 http://ejohn.org/blog/javascript-micro-templating/


m
mckamey

如果您在 .NET Framework 2.0/3.5 中工作,您应该查看由 http://JsonFx.net 实现的 JBST。它有一个客户端模板解决方案,该解决方案具有熟悉的 JSP/ASP 语法,但在构建时为紧凑的可缓存模板进行了预编译,这些模板不需要在运行时进行解析。它适用于 jQuery 和其他 JavaScript 库,因为模板本身被编译为纯 JavaScript。


E
EShy

我正在使用 jtemplates jquery 插件,但性能真的很差。我切换到了性能更好的 trimpath (http://code.google.com/p/trimpath/wiki/JavaScriptTemplates)。我没有注意到 IE7 或 FF 有任何问题。


D
Donovan Walker

对于非常轻松的工作,jquery-tmpl 就足够了,但在某些情况下,它要求数据知道如何格式化自己(坏事!)。

如果您正在寻找功能更全面的模板插件,我建议您使用 Orange-J。它的灵感来自 Freemarker。它支持 if, else, 循环对象 &数组,内联 javascript,包括模板中的模板,并具有出色的输出格式选项(maxlen、wordboundary、htmlentities 等)。

哦,还有简单的语法。


s
studgeek

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

许多列出的模板解决方案(jQote、jquery-tmpl、jTemplates)的一个问题是它们要求您在 HTML 中插入非 HTML,这在 HTML 工具中或在与 HTML 设计人员的开发过程中可能会很痛苦.我个人不喜欢这种方法的感觉,尽管它有其优点和缺点。

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

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

列为另一个答案的 PURE 是这种方法的另一个示例。

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


s
s-sharma

Dropbox 在网站上使用 John Resig's template engine。他们对它进行了一些修改,您可以在此 js file 的保管箱中进行检查。在此文件中搜索 tmpl,您将获得模板引擎的代码。

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


B
Bny

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

http://www.enfusion-framework.org/(查看示例!)


m
mpapis

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

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