通过条件函数执行来提高速度?

时间:2011-10-07 04:12:13

标签: javascript jquery html performance

我有一个包含多个页面的网站,每个网页都附加了某些元素的自定义事件处理程序。每个页面在html标记中都有一个id(#page1,#page2,...)。

在我的网站javascript文件中,我已经为自动执行的模块中的每个网站分离了功能,简化如下:

//module 1 for stuff that happens on #page1
(function() {
    // stuff to happen, events, delegations, preparations, etc
})();

我认为只有在当前文档中找到#id时才能执行某些与页面相关的模块:

if( $("#page1").length ) {
   // call module 1
};

...因为在某些模块中发生了很多事件委托。

这是加速事情的常用/好方法吗?或者仅将模块包含在需要它们的子网站中的分离js文件中更好?或任何其他方法/想法?

1 个答案:

答案 0 :(得分:5)

将所有代码放在一个js文件中,以便缓存它。在主体或类似元素上放置一个id,然后将每个代码模块放在一个单独的函数中。然后有一个对象来保存链接到body元素id的模块引用,然后在onload中:

var modules = {
   id1: function() { /* stuff for page 1 */},
   id2: function() { /* stuff for page 2 */},
   ...
}
var id = document.body.id
if (id && id in modules) {
  modules[id]();
}

然后你只需给主体一个应该为该页面运行的函数的id。