直接从ajax reqest加载HTML,还是克隆模板并使用javascript插入数据?
我正在处理一个类似于论坛的页面,其中在线程的页面之间进行更改会从ajax请求中提取html并将其插入到div容器中直接从ajax reqest加载HTML,还是克隆模板并使用javascript插入数据?,javascript,ajax,Javascript,Ajax,我正在处理一个类似于论坛的页面,其中在线程的页面之间进行更改会从ajax请求中提取html并将其插入到div容器中 我的问题是,通过json检索获取基本数据,然后克隆一个消息模板并将所需的数据插入到该模板中会更快吗?几乎可以肯定,在客户端和服务器之间传输的信息更少,速度会更快。开发时间是另一回事。几乎可以肯定,由于客户端和服务器之间传输的信息较少,开发速度更快。开发时间是另一回事。在我看来,您可能面临两种间接费用: 跨Ajax请求的纯HTML将花费比原始数据更长的时间,但一旦到达客户端,就不会进
我的问题是,通过json检索获取基本数据,然后克隆一个消息模板并将所需的数据插入到该模板中会更快吗?几乎可以肯定,在客户端和服务器之间传输的信息更少,速度会更快。开发时间是另一回事。几乎可以肯定,由于客户端和服务器之间传输的信息较少,开发速度更快。开发时间是另一回事。在我看来,您可能面临两种间接费用:
我会选择选项2——任何减少发送给客户的数据量的机会都应该被利用。只是我的意见…在我看来,您可能面临两种间接费用:
我会选择选项2——任何减少发送给客户的数据量的机会都应该被利用。只是我的意见…通常我只从后端发送JSON数据,然后根据自己的喜好将其插入HTML页面 IMHO这将后端与前端稍微分离,并使服务器端API更具可重用性/通用性 我在网站中放置预定义的html部分,然后用JSON数据填充这些部分。我最近开发了一个可以浏览图像的应用程序。每次总是10张图片。html如下所示:
<table>
<tr>
<td id="img_0"></td>
<td id="img_1"></td>
<td id="img_2"></td>
....
<td id="img_9"></td>
</tr>
</table>
然后通过创建dom节点将其插入html页面:
for(var i = 0; i < response.comments.length; i++) {
var currentComment = response.comments[i];
var commentDiv = document.createElement('div');
commentDiv.className = "comment"
commentDiv.innerHTML = currentComment.text;
document.getElementById('commentContainer').appendChild(commentDiv);
}
for(var i=0;i
但这通常不是我的选择:在我看来,使用document.createElement('div')构建复杂的HTML非常烦人
存在Javascript模板引擎,这可能会使它更容易,但我从未使用过
在本例中,在服务器端构建完整的、可能很复杂的HTML对我来说似乎要好得多
有了GZIP,您可以减少通过网络发送的数据量,有了巧妙的缓存策略,您可以降低服务器负载
在您的案例中,第二种方法(从服务器获取生成的HTML)似乎是更好的方法。但如果没有更完整的信息,很难判断
这是没有明确的法律,所以你们的差异会有所不同。到目前为止,我在AJAX web应用程序中的工作经验。通常我只从后端发送JSON数据,然后将其插入HTML页面,但我喜欢 IMHO这将后端与前端稍微分离,并使服务器端API更具可重用性/通用性 我在网站中放置预定义的html部分,然后用JSON数据填充这些部分。我最近开发了一个可以浏览图像的应用程序。每次总是10张图片。html如下所示:
<table>
<tr>
<td id="img_0"></td>
<td id="img_1"></td>
<td id="img_2"></td>
....
<td id="img_9"></td>
</tr>
</table>
然后通过创建dom节点将其插入html页面:
for(var i = 0; i < response.comments.length; i++) {
var currentComment = response.comments[i];
var commentDiv = document.createElement('div');
commentDiv.className = "comment"
commentDiv.innerHTML = currentComment.text;
document.getElementById('commentContainer').appendChild(commentDiv);
}
for(var i=0;i
但这通常不是我的选择:在我看来,使用document.createElement('div')构建复杂的HTML非常烦人
存在Javascript模板引擎,这可能会使它更容易,但我从未使用过
在本例中,在服务器端构建完整的、可能很复杂的HTML对我来说似乎要好得多
有了GZIP,您可以减少通过网络发送的数据量,有了巧妙的缓存策略,您可以降低服务器负载
在您的案例中,第二种方法(从服务器获取生成的HTML)似乎是更好的方法。但如果没有更完整的信息,很难判断
这是没有明确的法律,所以你们的差异会有所不同。就我目前在AJAX web应用程序中的工作经验而言。您指出的可移植性方面可能会在今后的工作中派上用场,感谢您的全面响应!您指出的可移植性方面可能会在将来派上用场,感谢您的全面响应!
for(var i = 0; i < response.comments.length; i++) {
var currentComment = response.comments[i];
var commentDiv = document.createElement('div');
commentDiv.className = "comment"
commentDiv.innerHTML = currentComment.text;
document.getElementById('commentContainer').appendChild(commentDiv);
}