JS里面的HTML?或者在单独的html文件中(通过$ .ajax或$ .load加载)

时间:2012-01-03 03:57:46

标签: javascript jquery html templating

什么是更好/最好的解决方案?以前所有的标记都是在html文件中初始化的,

的index.php

//login block
<div id="login">
    form ...
</div>

因此,无论何时登录,我都必须使用$.ajax删除/隐藏这些登录块,以检查是否存在现有会话,然后隐藏整个登录标记(.hide())并显示不同的标记对于登录用户。

这样做的问题是,它在执行脚本之前等待整个文档加载,因此非预期/隐藏标记将显示,然后在页面加载时快速消失。

我也尝试将标记内联到javascript中,但我认为它违反了js中的“不引人注目”的想法。

e.g。

var markup_arr = [
    '<h4>Login</h4>',
    '<form></form>'
];
var markup = markup_arr.join('');

所以我最终得到了这个

当前解决方案:分离html文件并使用jQuery的$ .load()

加载它

您使用的是什么,哪种是最佳做法,哪种加载速度快?或者你有什么更好的解决方案吗?感谢。

修改 这些都是javascript / ajax进程,所以我不是在寻找服务器端解决方案(include,require_once)

2 个答案:

答案 0 :(得分:2)

对此没有正确的答案。我的观点是,您希望以最少的请求数量向用户提供最少量的数据。这都是为了找到合适的平衡点。根据您的用户,余额将更改为。

对我来说,我更喜欢发送两个每个5kB的文件,而不是四个2kB的文件。您正在发送更多数据,但由于请求较少,因此应该尽可能快。我认为将它作为Javascript的一部分提供可能是最好的。请注意,它不一定需要是同一个文件,虽然我将它作为一个文件提供 - 有一个简单的(PHP等)脚本将代码文件和数据文件合并为一个,然后将其传递出去

我要确定的另一件事是你尽可能地缓存一切。如果您只需要下载一次并且缓存一年,那么稍微大一点的文件通常不会成为问题。如果您的用户每天都在下载较大的文件,或者更糟糕的是,每个页面查看它都会成为一个问题。

答案 1 :(得分:0)

如果会话存在,我会检查服务器端,如果会话存在,则包含单独的“html”(php / rb / py / asp /无论如何)文件,如果不存在,则包含登录表单。当用户登录时,ajax将回答相同的“html”文件。 (如果我正确理解您的问题,并且登录表单是页眉中的一行)。