我开始将一些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的框架。我不知道它有多好,因为我还没用过它。乍一看,我对它的模板语法并不感到兴奋。
任何人都知道我应该研究的其他框架或插件吗?有没有讨论过这类事情的博客文章或其他资源?我只是想确保在自己构建之前我已经对所有内容进行了调查。
谢谢!
答案 0 :(得分:6)
自发布此问题以来,我发现了许多其他模板选项。我在下面列出了很多。然而,最近有一个jQuery templates proposal可能是最有希望的解决方案。 jquery站点上还有一个discussion about it。这是项目位置:
我遇到的其他解决方案包括(没有特别的顺序):
答案 1 :(得分:2)
答案 2 :(得分:1)
我已经使用了几次jTemplates,根据我的经验,它可以达到预期的目的。
如果我们将讨论限制在客户端,那么这是我对此事的最终评论,因为它完成了工作,尽管有一些时髦的语法做得很好,但是在服务器方面,我肯定更喜欢这种情况。将一些被反序列化的JSON发布到内存中对象,然后进行验证并传递给服务器端模板(例如ASP.NET中的ASCX),在那里您可以充分发挥该语言的功能。
在我看来,如果客户端支持JavaScript足以让你考虑使用jTemplates,那么我建议你自己设置一个JavaScript实用程序方法,它允许你发送JSON并接收HTML,从而切断潜在的麻烦中间人。大多数语言都具有JSON解析能力,jQuery可以通过将返回类型指定为“json”来自动将服务器响应解析为JSON。
即使您没有从JavaScript接收JSON,您仍然可以将您已发送回的JSON发送回浏览器,而只是通过服务器端模板发送它。在ASP.NET中(例如使用MVC),您可以拥有不需要编译的强类型模板文件,从而使更改更容易实现。因此,您仍然会发送回标记,但它本来是通过一个合适的模板运行的,其背后是编程语言的全部优势。