好吧,我的情况是我在一个大型网站上工作,我一直在做的是使用一个主.js
文件来存储我想要在onclick等元素上使用的所有绑定的js代码,onchange等等....这些都在一个onDomReady
方法中保存。
现在我想知道让每个页面都必须遍历这些并“搜索”每个元素以查看它是否必须绑定任何东西是个好主意吗?
..或者我应该使用更多的特异性来防止这种情况,例如#page1
,#page2
等主页ID,或者我应该将它们存储在特定页面标题中(我不是真的我想这样做,因为我宁愿把它放在一个地方)。
只是尝试优化事物并摆脱不必要的开销! :)
答案 0 :(得分:1)
如果我理解正确,你的所有事件处理程序都有一个js文件。 这个文件包含在很多页面中。
例如,如果文件中有100个事件处理程序,则每个页面可能只使用其中的10个。
如果是这样的话,那就没有效率了,因为你有很多 document.getElementBy ...没有对元素进行补偿,因为它们属于不同的页面,或者更糟糕的是,在多页面上查找具有相同选择器的元素,这些元素不应绑定到特定页面上的处理程序。
另外,您正在将脚本添加到不需要的页面中。
最好只为每个页面提供它所需要的内容,无论是在外部js中还是在非常小的脚本中,在doucment头中。
您跨页共享的js应该是您打算经常重复使用的代码。
编辑: 回应评论:
关于减少http请求,你的意思是一个文件将在缓存中,以供其他页面使用?公平地说,这是一个好处。虽然有一些权衡,例如由于你在页面中不需要的javascript而增加了内存使用量。
使用更具体的选择器将降低将事件处理程序附加到您不想要定位的页面中的错误元素的风险,但有一个更安全的选项:
如果你想在页面之间共享一个事件处理程序文件, 通过将它们包装为每个页面一个函数对它们进行分组。从页面调用该函数。
这样,你就不必执行一堆你不需要的代码,并且不要冒险将错误的事件处理程序添加到跨页面的simmilar元素。