【发布时间】:2014-01-23 19:20:59
【问题描述】:
为此使用全局对象对我来说是个问题。这是一个说明我的问题的简单示例:
在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 调用构建的。当您尝试使用不是required 的东西时,这将导致运行时错误。不确定这是否可能。
有没有办法按照我描述的方式做,或者有什么替代方法?
【问题讨论】:
标签: javascript dependency-management google-closure-library