这是我们经常遇到的问题。考虑一下这个jQuery:
$(".tabs").remove();
以上情况很好,但是,如果在100个单独的页面中只有1个页面带有"标签"类。
到目前为止,我们的解决方案是:
if ($("body#library").length > 0) {
$(".tabs").remove();
// More Library page specific code here
} else if ($("body#links").length > 0) {
// Links page specific code here
}
然后在所需的页面上我们这样做:
<body id="library">
我的想法是找到$("body#library")
对于jQuery来说会很快。然后,我们可以为每个页面提供一个ID,并使用单个JavaScript文件,我们可以为每个页面包含特定于页面的代码。
我担心的是,这仍然不是非常有效。另一个想法是为每个页面提供一个特定的JavaScript文件。但是这会增加HTTP请求。我经常看到每页包含10个或更多JavaScript网页的网站,在我看来,这个网站太重了。我们更喜欢单个站点范围的JavaScript文件,因为它更易于管理,意味着只需要请求(和缓存)一个文件。
关于如何处理这个问题还有其他想法吗?
答案 0 :(得分:0)
我想这取决于用户打开几个不同页面的可能性。
如果用户可能只加载库或链接页面,我将使用所有页面中包含的一个全局javascript文件,并在每个页面上使用第二个,仅包含特定页面所需的代码
但是,如果用户可能会打开许多/大多数页面,我会将其放在一个大文件中,并以某种方式确定需要运行哪些代码(例如在主体上使用ID)。
此外,如果从选择器中删除标记名称,它将更快,因为它可以直接使用本机getElementById()
函数。 ($('#library')
代替$('body#library')
)。
请参阅我设置的performance test。