什么是`goog.require`的包含顺序?

时间:2013-11-13 14:58:30

标签: javascript google-closure-compiler google-closure

我到处搜索过,似乎找不到这个问题的答案:谷歌闭包编译器使用goog.require函数解析依赖关系的顺序是什么。

示例:

goog.require('work.Utils');
goog.require('work.Languages');
goog.require('work.BrowserData');
goog.require('work.EventSystem');
goog.require('work.FileDescriptor');
goog.require('work.Environment');

这些都是按照确切的顺序在单个文件中所需要的,因为它们会相互使用。例如work.BrowserData使用work.Languages,但所有文件都使用work.Utils。因此,不要在每个文件中要求work.Utils我包含在顶部,以便编译器首先加载它然后加载其余文件。

问题是编译后的包含顺序是不同的:

work.EventSystem
work.FileDescriptor
work.Environment
work.BrowserData
work.Languages
work.Utils

这意味着在执行点,这两个文件都无权访问work.Utilswork.BrowserData有查找work.Utils的问题。

除了在每个文件中包含每个必需的文件(这对于大型库来说是一项繁琐的工作),另一个解决方案是什么(如果存在)。

谢谢。

1 个答案:

答案 0 :(得分:1)

如果其他文件需要work.Utils,那么这些文件中应该是必需的。