使用Google Closure编译器

时间:2010-02-09 02:06:20

标签: jquery google-closure-compiler google-closure

  

可能重复:
  jQuery compiled with Google Closure Compiler

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

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

3 个答案:

答案 0 :(得分:16)

如果通过为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/browse/trunk/contrib/externs/

答案 1 :(得分:8)

你必须告诉Closure编译器什么不优化。

我使用在线编译器(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 paramater传递该文件名,如Palmerlee的答案。

如果您对为什么不能通过http://code.google.com/closure/compiler/docs/api-tutorial3.html

启用高级优化感兴趣

答案 2 :(得分:1)

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

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

否则,不。