1

我拍摄了我使用的 jquery.js 文件和 jquery-ui 文件的快照,并将它们与我用于我的站点的所有其他 .js 文件一起转储到一个巨大的 .js 文件中。

当我在没有缩小/打包的情况下执行此操作时,文件停止工作,并且当我尝试将其加载到我的站点而不是通常的 .js 文件时,文件上出现“递归太深”错误。所有的错误都来自 jquery 和 jquery-ui。使用简单的编号方案,我确保 jquery.js/jquery-ui 文件是文件中第一个列出的并且顺序正确(与包含单个文件相同。)

两个问题: 1) JavaScript 的包含标签与将所有文件转储到一个大文件中的效果不一样吗?JavaScript 文件在它们自己的脚本标签或不同文件中是否有额外的隔离/绝缘?

2) 我的目标是通过一个巨大的 .js 文件来加快我的网站速度,其中包含我在我的网站中使用过的所有 JavaScript(在 JQuery 中很重)并缩小该文件。为什么这是误导?有什么更好的方法呢?

注意:Google 的 JQuery 文件的 CDN 版本对我不起作用,我使用的所有 JQuery 插件/主题都不适用于 Google 的版本(无论如何,谁说他们可以成功使用 Google 的 CDN 是在撒谎。)

更新:感谢答案中的好建议,所有这些都帮助我了解了有关在生产服务器上部署 JavaScript 文件的更多信息。我实际上一直在使用 JQuery UI 插件的最新 SVN 分支,并且 UI 插件中存在错误,导致它们无法与我的文件合并在一起。我得到了最新的 Theme Rolled 插件,这些插件已经在一个文件中缩小并且可以解决这个问题。

4

3 回答 3

5

可能您的 JavaScript 文件有一些语法错误。浏览器可以在一个一个加载文件时纠正它们,但当“坏”文件组合时会失败。您可以尝试使用 Rhino 编译器 ( http://www.mozilla.org/rhino/ )编译您的文件

java -cp build/js.jar org.mozilla.javascript.tools.jsc.Main giant.js

您也可以使用 JSLint 验证器 ( http://www.jslint.com/ ),认为它可能无法处理 jQuery。但是您仍然可以合并所有文件并验证它们。

于 2009-02-21T23:22:17.277 回答
1

我建议使用像这个这样的脚本管理器来只注册您需要的文件和插件,并即时加载它们。

这将您的请求保持在最低限度,并且您不必一页加载一些巨大的 300k JS 文件。

于 2009-02-21T22:28:21.430 回答
0

另一个问题可能是加载顺序发生了变化。大多数 JavaScript 文件应该是独立于加载顺序的,但如果你在最后加载 jquery 之后:

$(document).ready(function() {});

你会遇到问题。

于 2009-02-22T03:06:50.107 回答