最佳实践:加载渲染的html或json?

时间:2009-07-17 20:29:15

标签: html ajax json

嘿伙计们,我有一个感觉很愚蠢的问题,但我不能说出原因。

背景

想象一下包含用户和标签的webapp。用户互相标记。

我在应用程序中有一个页面,显示与单个用户相关的单个标记的详细信息。假设用户' bob '并标记' footag '。在这个页面上,我显示了两个列表:所有使用'footag'标记bob并且所有人bob都标记为'footag'的人。我们称之为 <div id="received'> <div id="sent">

假设此视图的网址为/users/bob/tags/footag

当然,这些列表很长 - 我不想在浏览页面上加载整个列表。所以我为每个加载前十个。

问题

现在,我可以通过以下两种方式之一为每个列表提供动态分页:

  1. 以json的形式获取下10个用户的数据。编写js以呈现此数据,替换div
  2. 的内容
  3. 从我服务器上另一个定义良好的网址获取html呈现的“片段”,例如/users/bob/tags/footag/received?page=1。我以异步方式获取它,只需替换相关<div>
  4. 的内容

    因此,在一个案例中,我在浏览器中通过JS获取数据并进行渲染,另一个我获取渲染数据并将其批量整理到文档中。

    有没有理由不使用#2?我无法想象一个,但我想可能存在我不考虑的安全方面,或性能,或其他。我更喜欢做#2,因为它显着简化了我的生活。

    谢谢!

6 个答案:

答案 0 :(得分:4)

我有一个这样的应用程序 - 我使用这两种方法。

我使用您的方法#1更新不连续的字段(例如,整个地方的输入字段),但我使用您的方法#2更新表格数据,有点像您的列表。

我会坚持你的情况#2。

答案 1 :(得分:2)

我选择#1 ...所以你真的得到了数据,而不仅仅是一些HTML ......它只是一个简洁的JavaScript对象结构,而不是一些字符串,所以你可以随意评估数据,缓存它,用它进行搜索等等......在客户端做的工作越多,越聪明,你的应用程序就越好......你有1台服务器,或者2-10,或者我不知道,但你有10-10000多客户......

格尔茨

back2dos

答案 2 :(得分:1)

我个人会使用方法#2。为什么浪费时间使用服务器端语言可以轻松,更好地完成客户端解析?不是创建一个数组然后将其转换为json,而是循环遍历结果并回显HTML会好得多。

答案 3 :(得分:1)

我会在几个浏览器中对它进行基准测试,但我怀疑#1(传输为JSON)实际上可以证明更快。使用该方法,您可以简单地替换现有DOM节点的值。例如。 (非常简化)更改(直接使用DOM操作):

<li>foo</li>
<li>bar</li>
<li>baz</li>

为:

<li>foo2</li>
<li>bar2</li>
<li>baz2</li>

获得JSON:

["foo2", "bar2", "baz2"]

这样,您就不会不必要地创建新的DOM节点。另一个优点是,如果您稍后决定以某种形式公开JSON API,那么JSON API会更“开胃”。

答案 4 :(得分:0)

好吧,除了从服务器加载格式的轻微开销,这可能使它对于大量数据稍微慢一些,我看不出任何缺点。而且由于javascript渲染可能也会很慢,我会选择#2。

答案 5 :(得分:0)

对于大多数情况我说#1。如果要在更新的div之外添加“next / prev”页面按钮,则可以使用JS来确定何时启用/禁用它们。使用#1可以提供更大的灵活性,并进一步将数据与表示分离。

在我看来,表现和“易于开发”可以忽略不计。对于较小的“数据块”(假设您的JS处于理智状态)并且“易于开发”的性能不是很大,考虑到这更容易维护。