Google闭包库goog.forwardDeclare命名空间javascript

时间:2015-07-27 15:15:23

标签: javascript namespaces closures require forward-declaration

我有一些问题,我确信社区可以帮助我)))

例如:我有下一个javascript文件

file1.js

goog.provide('namespace.ModuleName');
goog.require('namespace.ModuleName.Item')

/**
* @param {Object} args
*@constructor
*/

namespace.ModuleName = function(args) {
....
..Initialization..
...
var item = [];
item.push(new namespace.ModuleName.Item(args)) // THIS ERROR
}

/**
* @private
*/
namespace.ModuleName.prototype.MyMethod = function() {
...
...
...
}

下一部分。我想创建新文件

file2.js

goog.provide('namespace.ModuleName.Item')

/**
* @param {Object} args
*@constructor
*/
namespace.ModuleName.Item = function(args) {

}

我有一些问题,因为“namespace.ModuleName.Item”不知道namespace.ModuleName。我可以修好它。我需要在goog.provide('namespace.ModuleName.Item')下面写goog.require('namespace.ModuleName')。 但我又有一些问题。 Google Closure编译器编写“Require LOOP”。我可以删除“goog.require('namespace.ModuleName.Item')”的行。但这些解决方案不正确

命名模块的正确方法是什么

我在谷歌论坛上问这个问题。伙计们告诉我“使用goog.forwardDeclare”

https://groups.google.com/forum/#!topic/closure-library-discuss/PptH2fzcs_M

我尝试在goog.provide('namespace.ModuleName.Item')下面的\上面写goog.forwardDeclare('namespace.ModuleName')。但它对我不起作用。你能帮助我吗 ?请。或者写一些例子。如何使用goog.forwardDeclare。

0 个答案:

没有答案