如何goog.require从CDN的JQuery?

时间:2015-02-15 15:48:28

标签: javascript jquery google-closure google-closure-library

我目前experimenting使用不同的JavaScript模块格式和加载程序,还想试用Google Closure

我已basic example正常工作,但无法弄清楚如何将goog.require用于外部库。我们以JQuery from CDN为例。

现在我正在做以下事情。在HTML页面中:

<script src="https://code.jquery.com/jquery-2.1.3.min.js"></script>

在剧本中:

goog.require("Greets");
goog.provide("Greets.MsgDivMessenger");

Greets.MsgDivMessenger = function() {};
Greets.MsgDivMessenger.prototype.sendMessage = function(message)
{
    $('#msg').text(message);
};

这可以通过HTML页面本身的$标记包含全局<script .../>

但我想要做的是通过goog.require加载JQuery,而无需 HTML页面中的<script .../>标记:

goog.require("Greets");
goog.require("$");
goog.provide("Greets.MsgDivMessenger");

Greets.MsgDivMessenger = function() {};
Greets.MsgDivMessenger.prototype.sendMessage = function(message)
{
    $('#msg').text(message);
};

我尝试将JQuery CDN URL添加为依赖项:

goog.addDependency('https://code.jquery.com/jquery-2.1.3.min.js', ['$'], []);

但这不起作用,goog.require尝试加载.../closure/goog/https://code.jquery.com/jquery-2.1.3.min.js

是的,我知道我不需要$('msg')的JQuery,但重点是使用Google Closure管理模块(包括外部模块)。

我怎样才能goog.require来自CDN的JQuery?

1 个答案:

答案 0 :(得分:2)

这不是预期用途,并且不支持它。 goog.provide/require是一种依赖管理方案。声明为“goog.provide”的文件可能需要通过goog.require声明它。对于生产用途,依赖项将被预加载或捆绑。

除非您想破解Closure,否则您唯一的选择就是将其与您的来源一起托管。