客户端模板框架,以简化使用REST / JSON的jQuery

时间:2010-02-06 23:14:36

标签: json rest jquery-plugins jquery

我开始将一些html生成任务从服务器端框架迁移到客户端。我在客户端上使用jQuery。我的目标是通过REST API获取JSON数据,并使用此数据将HTML填充到页面中。

现在,当我网站上的用户点击指向我的项目的链接时,服务器会生成如下HTML:

<dl>
    <dt>Clean Toilet</dt>
    <dd>Get off your butt and clean this filth!</dd>

    <dt>Clean Car</dt>
    <dd>I think there's something growing in there...</dd>

    <dt>Replace Puked on Baby Sheets</dt>
</dl>

我正在更改此内容,以便点击我的项目现在会执行返回此类内容的GET请求:

[
  {
    "name":"Clean Car",
    "description":"I think there's something growing in there..."
  },
  {
    "name":"Clean Toilets",
    "description":"Get off your butt and clean this filth!"
  },
  {
    "name":"Replace Puked on Baby Sheets"
  }
]

我当然可以编写自定义jQuery代码来获取JSON并从中生成HTML。这不是我的问题,我不需要有关如何做到这一点的建议。

我想要做的是将表示和布局与逻辑(jquery代码)完全分开。我不想通过jQuery代码创建DL,DT和DD元素。我宁愿使用某些HTML模板来填充数据。这些模板可能只是隐藏在加载应用程序的页面中的HTML片段。或者它们可以从服务器动态加载(以支持用户特定的布局,i18n等)。它们可以一次显示,也可以循环和重复。也许它应该支持子模板,if / then / else等等。

我的网站上有很多以不同方式呈现的列表和内容。我希望创建一种简单而一致的方式来生成和显示内容,而无需为我网站上的每个不同功能创建自定义jQuery代码。对我来说,这意味着我需要在jQuery(可能是一个插件)之上找到或构建一个满足这些要求的小框架。

我发现的唯一一种类似于jTemplates的框架。我不知道它有多好,因为我还没用过它。乍一看,我对它的模板语法并不感到兴奋。

任何人都知道我应该研究的其他框架或插件吗?有没有讨论过这类事情的博客文章或其他资源?我只是想确保在自己构建之前我已经对所有内容进行了调查。

谢谢!

3 个答案:

答案 0 :(得分:6)

自发布此问题以来,我发现了许多其他模板选项。我在下面列出了很多。然而,最近有一个jQuery templates proposal可能是最有希望的解决方案。 jquery站点上还有一个discussion about it。这是项目位置:

我遇到的其他解决方案包括(没有特别的顺序):

答案 1 :(得分:2)

听起来像你想要sammy.js

http://code.quirkey.com/sammy/

那里的教程演示了模板引擎的使用

答案 2 :(得分:1)

我已经使用了几次jTemplates,根据我的经验,它可以达到预期的目的。

如果我们将讨论限制在客户端,那么这是我对此事的最终评论,因为它完成了工作,尽管有一些时髦的语法做得很好,但是在服务器方面,我肯定更喜欢这种情况。将一些被反序列化的JSON发布到内存中对象,然后进行验证并传递给服务器端模板(例如ASP.NET中的ASCX),在那里您可以充分发挥该语言的功能。

在我看来,如果客户端支持JavaScript足以让你考虑使用jTemplates,那么我建议你自己设置一个JavaScript实用程序方法,它允许你发送JSON并接收HTML,从而切断潜在的麻烦中间人。大多数语言都具有JSON解析能力,jQuery可以通过将返回类型指定为“json”来自动将服务器响应解析为JSON。

即使您没有从JavaScript接收JSON,您仍然可以将您已发送回的JSON发送回浏览器,而只是通过服务器端模板发送它。在ASP.NET中(例如使用MVC),您可以拥有不需要编译的强类型模板文件,从而使更改更容易实现。因此,您仍然会发送回标记,但它本来是通过一个合适的模板运行的,其背后是编程语言的全部优势。