Jquery 使用Google闭包编译器

Jquery 使用Google闭包编译器,jquery,google-closure-compiler,google-closure,Jquery,Google Closure Compiler,Google Closure,可能重复: 我正在使用jQuery,我的所有JS代码都在application.JS文件中。当我使用谷歌闭包编译器(使用高级选项)编译“application.js”时,我得到了一个没有错误和警告的js文件。但是,我无法在我的页面中使用该文件,我在页面加载时遇到一个错误,该错误表示“TypeError:Result of expression'$(“div.tile”)。d'[undefined]不是函数。” 我的问题是我可以编译一个使用jQuery的js文件吗?是的,如果您愿意将jQuery

可能重复:

我正在使用jQuery,我的所有JS代码都在application.JS文件中。当我使用谷歌闭包编译器(使用高级选项)编译“application.js”时,我得到了一个没有错误和警告的js文件。但是,我无法在我的页面中使用该文件,我在页面加载时遇到一个错误,该错误表示“TypeError:Result of expression'$(“div.tile”)。d'[undefined]不是函数。”


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

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

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


否则,不可以。

如果您通过为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外部文件:

您必须告诉闭包编译器哪些不需要优化

我通过在线编译器()添加一个externs\uURL参数来实现这一点。当您在联机编译器上键入代码时,它将自动附加一个类似于此的头,但默认情况下没有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==
您可以在上查看当前可用的外部文件。它们拥有几乎所有版本的jQuery


要使用可下载的Java版本的编译器实现这一点,您只需在cli上传递--externs_url参数,或者下载所需的extern文件,并使用--externs参数传递该文件名,就像Palmerley的回答一样


如果您对为什么不能直接打开高级优化感兴趣,请通读

,这对上述问题不起作用,因为他想使用高级优化;无法通过高级优化器运行jQuery源代码。您只能使用简单编译器并指定jQuery的code_url参数,但这将在输出中包括整个jQuery。如何将序言与可下载的Java版本的编译器一起使用?我得到了很多“错误-变量X未声明”,将它们全部添加为--externs非常麻烦。@lambdor我认为对于正常的可下载版本,您必须使用--externs。您还可以通过其API访问在线版本,该API使用序言版本“要使用可下载的Java版本的编译器执行此操作,您只需在cli上传递
--externs\u url
参数”。不正确,不幸的是,“
”--externs\u url”不是有效选项
”这些链接现在似乎位于github上