1
为此,使用全局对象对我来说存在问题。这是说明我的问题一个简单的例子:有没有办法`goog.provide`而不使用全局对象?
在a.js
:
goog.provide('app.a');
goog.require('app.b');
app.a = function() {
return [
app.b('Hey, there!'),
app.c('yo')
];
};
注意在上述文件中,我使用app.c
没有明确要求它。
在b.js
:
goog.provide('app.b');
goog.require('app.c');
app.b = function (msg) {
return app.c('b ' + msg);
};
在c.js
:
goog.provide('app.c');
app.c = function (msg) {
return { msg: msg };
};
我可以通过closurebuilder运行这个,它会运行得很好。它也将在浏览器中无误地运行。但我不喜欢app.c
没有明确要求是可用的。
我能想到的最好的解决方案是,如果每个文件都可以以某种方式使用自己的app
全局变量副本,该变量是goog.require
调用构建的。当您尝试使用非require
d的内容时,这会导致运行时错误。不知道这是否可能。
有没有办法做我所描述的,或者是否有一些选择?