【问题标题】:Simple merge of the js files caused errors and jquery being undefinedjs文件的简单合并导致错误和jquery未定义
【发布时间】:2011-07-17 00:52:37
【问题描述】:

我在这里处理一个纯js前端,今天尝试使用Juicer来压缩javascript。 它在没有缩小的情况下工作得很好,因为我使用的库中有大量错误是由 JsLint 发现的,为了使文件最小化,验证器是必不可少的。 我保持原样,因为至少合并工作会很酷,但似乎并非如此。 虽然最终所有文件确实合并为一个,但应用程序停止工作,因为 jquery 被认为是未定义的。但在文件中仍然是第一位的。

这种奇怪行为的可能原因是什么?非常感谢您的回答!

UPD 这是link to the merged file

【问题讨论】:

  • 库中有大量错误?你的意思是真正的错误还是只是 jslint 错误?
  • 它们的合并顺序是否与通常包含的相同?你能发布有问题的javascripts或链接到页面吗?
  • 它们是 jslint 的“错误”。顺序完全相同,这是文件:gist.github.com/874368。我得到的仅包含此文件的错误是“vendor.min.js:4147Uncaught SyntaxError: Unexpected token ILLEGAL”,我真的不明白,因为这是评论中的错误。如果我包含任何其他 js 文件 - 他们无法识别 jquery。

标签: javascript jquery merge


【解决方案1】:

由于您只想合并它们而不是缩小它们,因此可以尝试手动合并它们。只是:

cat file1.js file2.js file3.js > all.js

CSS 也一样,不需要花哨的合并。

为了缩小 JavaScript,我推荐UglifyJS,因为它不像其他一些工具那样容易破坏代码。 jQuery 使用 UglifyJS。

当您通过简单的连接合并 JavaScript 文件时,重要的是文件的顺序不要破坏依赖关系。有时会导致问题的另一件事是缺少分号(在缩小后可能会破坏代码)或文件末尾缺少换行符。

【讨论】:

  • 我爱你爱你爱你。 UglifyJS 是有史以来最好的东西。哦,天哪。您刚刚为我节省了数小时的体力劳动。
  • @tylermwashburn:如果你丑化太多,请使用beautifier。 ;)
  • Cat 目前对我来说确实足够了,如果它只支持从结构良好的列表中列出的其他文件中获取要合并的文件列表的方式。我有很多依赖项,所以一个接一个地列出它们并不方便。我试过用谷歌搜索,但找不到像 -f vendor.txt 这样的东西来完成这项工作。大概你可以推荐一个方法?稍后我一定会用它的 api 检查 Uglify,它看起来很方便。
  • 分号让我明白了!谢谢回复。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-08-23
  • 2020-12-03
  • 2021-09-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-09
相关资源
最近更新 更多