将通过AJAX提取的视图渲染到现有DOM树的最佳实践

时间:2014-01-27 16:26:12

标签: html ajax client-side

我想这是一种常见的情况:

您有一个页面中的项目列表,对于(一个简单的)示例:

<ul class="items">
  <li class="item">Item 1</li>
  <li class="item">Item 2</li>
  <li class="item">Item 3</li>
</ul>

存在一个按钮,允许您通过AJAX加载另外3个项目 - “简单”的方法是返回3个新项目的HTML,然后将它们注入DOM。

但是,如果我们希望对这些数据进行一些客户端操作,那么我们必须解析返回的HTML,操作数据然后重新模板化,然后注入DOM。

我想,对于不太简单的应用程序,服务器将返回JSON格式的数据,准备进行操作然后进行模板化。但是,您现在拥有冗余,您的“模板”既存在于服务器端,也存在于客户端逻辑中。此外,如果你使用像Backbone这样的东西来处理视图/模型,或者使用Mustache或其他东西进行模板化,那就变得更加复杂了。

我们如何处理这种冗余?服务器也返回模板吗?

2 个答案:

答案 0 :(得分:1)

我倾向于在服务器上保留所有数据处理和渲染,不仅仅是因为冗余,而是分离关注点。如果你想要针对不同的数据或不同的模板进行渲染,那么发送一个修改后的请求,该请求返回可以直接插入的HTML,而不必使用它。

答案 1 :(得分:0)

一种方法,可能是生成js dinamically(在服务器端):生成包含格式化为json的前3个元素的var,然后调用在加载时添加li的函数。

这样,您将避免冗余并创建客户端操作。