为什么谷歌关闭构建器会忽略goog.addDependency?

时间:2014-11-14 07:04:40

标签: google-closure-compiler google-closure

我有一个使用谷歌关闭的应用程序。当我创建一个组件时,我在deps.js文件中添加了这段代码:

goog.addDependency('path/to/my/component.js', ['My.Component'], [
  'goog.ui.Component',
  'another.one.dependency'
]);

然后我创建component.js文件:

goog.provide('My.Component');

My.Component = function() {
  ...
}

有效。但是当我使用closure builder闭包构建器创建构建时,忽略goog.addDependency代码并且它不包含构建中的依赖项。所以,如果我想在构建中包含dependecies,我应该在component.js中添加goog.require():

goog.provide('My.Component');

goog.require('goog.ui.Component');
goog.require('another.one.dependency');

My.Component = function() {
  ...
}

这对我来说很不方便,因为我已经有超过一百个文件在他们的代码中没有得到goog.require()语句。

1 个答案:

答案 0 :(得分:1)

由于Closurebuilder本身计算依赖关系,因此您需要使用requires。

您不需要在每个文件中都需要所有内容,例如,如果您在主文件中需要goog.ui.Component,则所有组件都可以访问它。

对于开发,我建议使用Plovr。它还可以动态计算依赖关系,因此您无需担心在开发时生成deps文件。