使用Google Closure编译器

发布于 2024-08-20 21:54:11 字数 470 浏览 8 评论 0原文

可能的重复:
使用 Google Closure 编译器编译的 jQuery

我正在使用 jQuery,并且我拥有所有application.js 文件中的 JS 代码。当我使用 Google Closure 编译器(使用高级选项)编译“application.js”时,我得到一个没有错误和警告的 js 文件。但是,我无法在页面中使用该文件,页面加载时出现错误,显示“TypeError: 表达式 '$("div.tile").d' [undefined] 的结果不是函数。”

我的问题是我可以编译一个使用 jQuery 的 js 文件吗?

Possible Duplicate:
jQuery compiled with Google Closure Compiler

I am using jQuery and I have all of my JS code in application.js file. When I compile "application.js" with the Google Closure compiler (using the advance options) I get a js file with no errors and warning. However, I am unable to use the file in my page, I get an error on page load which says "TypeError: Result of expression '$("div.tile").d' [undefined] is not a function."

My question is can I compile a js file which uses jQuery?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

Hello爱情风 2024-08-27 21:54:11

如果您通过为 jQuery 指定“extern”文件来指定 js 文件使用 jQuery,则还可以使用高级模式。这样闭包编译器就不会改变 javascript 中的 jQuery 函数调用。

java -jar compiler.jar --compilation_level ADVANCED_OPTIMIZATIONS --js_output_file application.js --externs jquery-1.4.4.externs.js

您可以在这里找到一些 jQuery extern 文件:
http://code.google.com/p/closure-compiler/source /浏览/主干/contrib/externs/

You can also use advanced mode if you specify that your js file is using jQuery by specifying an 'extern' file for jQuery. This way the closure compiler won't change your jQuery function calls inside your javascript.

java -jar compiler.jar --compilation_level ADVANCED_OPTIMIZATIONS --js_output_file application.js --externs jquery-1.4.4.externs.js

You can find some of the jQuery extern files here:
http://code.google.com/p/closure-compiler/source/browse/trunk/contrib/externs/

明月松间行 2024-08-27 21:54:11

你必须告诉闭包编译器什么不应该优化。

我使用在线编译器( http://closure-compiler.appspot.com/home )来完成此操作通过添加 externs_url 参数。当您在在线编译器上输入代码时,它会自动附加一个与此类似的标头,但默认情况下没有 externs_url 参数。

// ==ClosureCompiler==
// @output_file_name default.js
// @compilation_level ADVANCED_OPTIMIZATIONS
// @externs_url https://closure-compiler.googlecode.com/git/contrib/externs/jquery-1.9.js
// ==/ClosureCompiler==

您可以在 https:// 查看当前可用的外部文件code.google.com/p/closure-compiler/source/browse/contrib/externs/ 。他们拥有几乎所有版本的 jQuery。

要使用可下载的 Java 版本的编译器来执行此操作,您只需在 cli 上传递 --externs_url 参数,或者下载所需的 extern 文件,然后使用 --externs 参数传递该文件名,就像 Palmerlee 的答案中那样。

如果您有兴趣了解为什么不能只启用高级优化,请阅读 http://code.google.com/closure/compiler/docs/api-tutorial3.html

You have to tell the Closure compiler what not to optimize.

I do this with online compiler( http://closure-compiler.appspot.com/home ) by adding a externs_url paramater. When You type in your code on the online compiler it will automatically append a header similar to this, but without an externs_url param by default.

// ==ClosureCompiler==
// @output_file_name default.js
// @compilation_level ADVANCED_OPTIMIZATIONS
// @externs_url https://closure-compiler.googlecode.com/git/contrib/externs/jquery-1.9.js
// ==/ClosureCompiler==

You can see what extern files are currently available at https://code.google.com/p/closure-compiler/source/browse/contrib/externs/ . They have most all versions of jQuery.

To do this with the downloadable Java version of the compiler you can just pass the --externs_url paramater on the cli or download the extern file you need and pass that filename with --externs paramater like in Palmerlee's answer.

If you are interested in why you can't just turn on advanced optimizations read through http://code.google.com/closure/compiler/docs/api-tutorial3.html

只是我以为 2024-08-27 21:54:11

是的,如果您愿意将 jQuery 文件包含在其他文件中。

是的,如果您使用简单模式。

否则,不行。

Yes, if you care to include the jQuery file in with your other file.

Yes, if you use simple mode, instead.

Otherwise, no.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文