0

在 Web 开发(更具体地说是 jQuery)中,我最好先“预加载”我的页面,然后使用 jQuery 来操作 DOM 或以其他方式操作。

这是以下问题:

<div id="item1"></div>
<div id="item2"></div>
<div id="element><!-- AJAX --></div>

$("#item1").click(function(e) {
     $("#element").load("ajax/response/containing/HTML_1.php");
});

$("#item2").click(function(e) {
     $("#element").load("ajax/response/containing/HTML_2.php");
});
.
.
.

相对

<div id="item1"></div>
<div id="item2"></div>
<div id="element>
   <div id="item1_content" style="display:none"><? include('/path/to/html_1'); ?></div>
   <div id="item2_content" style="display:none"><? include('/path/to/html_2'); ?></div>
</div>

$("#item1").click(function(e) {
     $("#item1_content").show();
     $("#item2_content").hide();
     //Possibly do an AJAX call that simply returns JSON data and do something with it
});

$("#item2").click(function(e) {
     $("#item2_content").show();
     $("#item1_content").hide();
     //Possibly do an AJAX call that simply returns JSON data and do something with it
});
.
.
.

我发现第二种方法更优雅,因为后端只返回前端操作的 JSON 数据。使用第一种方法,PHP 脚本必须实际返回 HTML。

我认为第一种方法会对服务器造成更大的影响,因为简单的事情(例如显示对话框)需要一个 AJAX 调用(即使它不需要一个,因为所有内容都包含在方法 2 中)。

第二种方法似乎会更重地打击客户端,因为我在 JS 中进行所有数据操作。然而,第一种方法将 HTML 响应转储到 div 中并重新格式化 DOM,所以我不确定它是否同样强烈。

加载时间的影响如何?第一种方法本质上必须渲染一个巨大的文档,其中包含可能永远不会显示但只有一个请求的元素,第二种方法必须发出一百万个请求,但会产生更小的 DOM。

4

1 回答 1

0

您是否关心访问者在查看页面源时看到的内容?如果你这样做,那么使用 AJAX。

服务器速度是否有可能成为问题?使用 AJAX 时可能会有非常轻微(但很明显)的延迟。如果这是一个问题,请使用隐藏/显示。

然而,正如杰克和罗里所指出的,一切都取决于你在做什么。如果您可以通过使某些数据加载有条件来更快地呈现初始页面,那么请使用 AJAX。

但是,AJAX 会给您的页面带来额外的复杂性。不多,但有一点。未来的开发人员是否能够维护您的页面?(几乎可以肯定,是的)

最后考虑:AJAX 很有趣。

于 2013-09-26T19:14:16.960 回答