【问题标题】:google closure compiler and jquery谷歌闭包编译器和 jquery
【发布时间】:2012-03-06 21:53:39
【问题描述】:

我将我的 js 代码复制粘贴到谷歌编译器中,当我将它复制回我的应用程序时,它不起作用。我意识到我的代码需要jquery所以我将jquery代码和我的代码复制到google编译器中,希望它可以轻松解决问题,但它也不起作用。

在 chrome 中,$(document).K(function () { 行的代码错误,这是文档准备功能。错误是Uncaught TypeError: Object [object Object] has no method 'K'

我需要做什么才能使其(暂时)起作用?

感谢您的建议。

【问题讨论】:

  • 您是使用高级缩小还是简单。如果使用简单,则不需要将 jquery 复制到编译器中。
  • 你说得对,应该指定我正在使用高级编译。
  • K 不是 jQuery 函数。应该是ready

标签: javascript jquery google-closure-compiler


【解决方案1】:

使用 @externs_url 在 Google 的 Closure 编译器中“导入”符号:

// @externs_url https://raw.githubusercontent.com/google/closure-compiler/master/contrib/externs/jquery-1.9.js

我建议使用contrib/externs 中定义的extern 之一,它只包含所有方法的名称。

示例

// ==ClosureCompiler==
// @compilation_level ADVANCED_OPTIMIZATIONS
// @externs_url https://raw.githubusercontent.com/google/closure-compiler/master/contrib/externs/jquery-1.9.js
// ==/ClosureCompiler==
$(document).ready(function(){alert(0);});  // Input

输出:

$(document).ready(function(){alert(0)});

【讨论】:

  • 当我尝试运行上面的输出时,我得到:'Uncaught ReferenceError: $ is not defined'
  • @Erik 输出并没有神奇地包含整个 90kB 的 jQuery。无论使用什么缩小器,您都需要先加载 jQuery,然后才能使用它。例如。使用<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
  • 感谢您的帮助,但我认为我可以用自己的代码编译 jQuery。如果我添加 window['jQuery'] = window['$'] = jQuery; 它将起作用
  • 您好,我想了解更多关于您所说的 symbolsexterns...我去了 Github 页面但没有找到任何信息关于它...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-03
相关资源
最近更新 更多