【问题标题】:Using Google Closure compiler [duplicate]使用 Google Closure 编译器 [重复]
【发布时间】:2011-01-14 15:22:08
【问题描述】:

可能重复:
jQuery compiled with Google Closure Compiler

我正在使用 jQuery,我的所有 JS 代码都在 application.js 文件中。当我使用 Google Closure 编译器(使用高级选项)编译“application.js”时,我得到一个没有错误和警告的 js 文件。但是,我无法在我的页面中使用该文件,我在页面加载时收到错误消息“TypeError: Result of expression '$("div.tile").d' [undefined] is not a function.”

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

【问题讨论】:

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


    【解决方案1】:

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

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

    否则,不。

    【讨论】:

    • 这不适用于上述问题,因为他想使用高级优化;您不能通过高级优化器运行 jQuery 源代码。您可以只使用简单编译器并指定 jQuery 的 code_url 参数,但这将在输出中包含整个 jQuery。
    【解决方案2】:

    如果您通过为 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/

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

      • 如何使用带有可下载 Java 版本编译器的序言?我收到很多“错误 - 变量 X 未声明”,并且将它们全部添加为 --externs 非常麻烦。
      • @lambdor 我认为您必须使用 --externs 来获取正常的可下载版本。您还可以通过他们的 API 访问在线版本,该 API 使用序言版本developers.google.com/closure/compiler/docs/gettingstarted_api
      • "要使用可下载的 Java 版本的编译器执行此操作,您只需在 cli 上传递 --externs_url 参数"。不幸的是,这不是真的,“"--externs_url" is not a valid option
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-14
      • 2010-12-14
      • 2023-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多