使用Jquery和Document Ready函数时,每页或组合一个JavaScript文件

使用Jquery和Document Ready函数时,每页或组合一个JavaScript文件,javascript,jquery,performance,Javascript,Jquery,Performance,好吧,我知道这取决于具体情况,但到目前为止,我已经将jquery文件/插件组合到一个压缩文件中 现在我想知道我应该如何处理特定于页面的js/jQuery代码。我应该有一个包含一个Document.Ready函数和我的entires站点js代码的文件吗?或者将其拆分为每页单独的js文件,每个页面中都有一个文档就绪调用 这些文件将包括.Click处理程序和特定于某些页面的其他jquery代码 优化加载时间和可维护性的最佳实践是什么?一种方法是使用require.js,然后使用一个包含文件和页面类型的

好吧,我知道这取决于具体情况,但到目前为止,我已经将jquery文件/插件组合到一个压缩文件中

现在我想知道我应该如何处理特定于页面的js/jQuery代码。我应该有一个包含一个Document.Ready函数和我的entires站点js代码的文件吗?或者将其拆分为每页单独的js文件,每个页面中都有一个文档就绪调用

这些文件将包括.Click处理程序和特定于某些页面的其他jquery代码


优化加载时间和可维护性的最佳实践是什么?

一种方法是使用require.js,然后使用一个包含文件和页面类型的数组。给每个body标记一个ID,并使用它来引用应该加载的文件

<body id="pageName">

保留核心功能正常工作所需的所有全局文件,然后延迟加载站点运行更快所不需要的功能。我从这项技术中看到了巨大的速度提升


因为您几乎肯定希望在文档中执行不同的内容。就绪功能取决于您所处的页面,我不认为在每个页面上执行一个功能是有帮助的

就我个人而言,我将$.ready调用与HTML混合在一起。这些是对存储在单个javascript文件中的函数的简单调用,最小化了javascript文件,因此不会占用太多字节,并且避免了每页需要单独的javascript文件。它还允许我在创建标记的地方启动Javascript,因此它都在一个地方


如果您正在最小化javascript并使用正确的标题为其提供服务,那么您已经获得了大部分好处,不要超出您必须的程度来损害可读性。

这还取决于您使用的服务器端技术。你可以找到一些工具来帮助你完成这项任务。如果您正在编写Java服务器端代码,可以尝试。它允许创建分离的JS/CSS文件,在服务器端合并和压缩它们,将所有分离的文件转换为单个文件


关于Document.Ready,我更喜欢将特定的代码页保存在单独的文件中,以避免错误的代码执行和行为。它也更干净,更易于维护。

我们可以用多种方法来实现这一点,我是用以下方法实现的

广泛地聚合您的文件如下

1) 聚合所有页面所需的所有文件 2) 聚合特定于该页面的页面

包括所有页面的所有公共聚合文件,并有条件地在页面上包括其他聚合文件

1) jquery和其他所有页面通用的插件,因此//它将转到所有文件 2) 主页聚合///用于主页 3) gallerypage聚合//用于库页面

如果所有页面都包含同一个文件,则可能并非所有文件都需要该文件


我最近做了,如果您还需要什么,请告诉我

我认为内联js由于无法压缩而不是首选。如果我错了,那么我的生活就更轻松了。事实上,我当前的web应用程序在所有页面上都使用了一个单一的、通用的、相同的文件。该代码使用简单的jQuery选择器(精心编写)来查找页面中的“功能”,并且一切正常。维护页面更容易,因为它们不需要在脚本方面“知道”它们需要什么,因为一切都在那里。@stephen776 inline JS通常被弃用,因为它“突兀”,并且因为除非缓存页面,否则它本质上不会被缓存(对于大多数动态构造页面的服务器端应用程序框架来说,这并不总是可能的)。当然,你不应该将函数定义内联,但我认为避免哪怕是很小的内联javascript也有点愚蠢。如果你已经确定HTML下载是页面中最慢的部分,那么你可以考虑避免它们,如果不是,那么先关注慢的部分!非常有趣。我将对此进行研究当然,我还没有花时间来验证这一点,但是如果我使用ASP.NET MVC3Hi stephen,那么这项技术很容易应用吗?如果你使用ASP.NET mvc3,那么你可以很容易地对它们进行聚合和分组de>集成了更多选项。