注意:我现在创建了一个 jQuery 插件,这是我尝试解决这个问题的方法。我确信它可以改进,我可能忽略了很多用例,所以如果有人想提供反馈,请随意:-) https://github.com/WickyNilliams/ReadyBinder
我没有这样的问题,但认为这将是一个有趣的讨论点,我希望人们对此有一些有趣的想法。
基本上,我在一个大型网站上工作,并且我们正在编写越来越多的 JavaScript。这很好,我喜欢 JS 的独特方法,并且我发现该语言的一些较暗的编年史中的古怪是可爱的 ;-) 然而,一直困扰我的一件事是如何管理文档就绪事件,因为它们变得越来越大随着时间的推移(因此对所服务的页面的关注度/特定性降低)
问题是我们有一个 JS 文件(合并和缩小,尽管这对我的问题来说无关紧要)。大多数 JS 都是使用显示模块模式编写的,而 jQuery 是我们选择的框架。所以我们所有的 JS 功能在逻辑上被分组到方法中,命名空间,然后在脚本文件的底部我们有这个
$(function(){
//lots of code here, usually calling encapsulated methods
//on our namespaced revealing module
});
问题是,并非此文档就绪处理程序中的所有代码都适用于每个页面。例如,在一个页面上可能只有 10% 的内容是相关的,而在另一个页面上可能有 80% 是相关的。对我来说,这感觉非常错误,我觉得我应该只执行每页需要的代码,主要是为了效率,也是为了可维护性。
我已经在谷歌搜索了解决这个问题的方法,但找不到任何东西,也许我只是在寻找错误的东西!
无论如何,所以我的问题是:
- 有没有人想过这个问题?
- 在其他人看来这真的是一个问题吗?
- 您的代码中是否有一个大型的、包罗万象的文档就绪处理程序,或者它是否更专注于所服务的页面类型?
- 如果是后者,您如何管理?在 JS 中切换的多个处理程序或在服务器端动态吐出文档就绪处理程序?
期待人们对此事的看法。
干杯