我还没有测试它,它可能需要一些微调,但这是我认为可以完成的方式。
YUI 加载器允许加载 YUI 本身的多个版本。这就是它提供通常调用的参数的原因,它在Y
完成加载请求的模块时调用它调用的回调:
YUI().use('moduleA', 'moduleB', ... , function (Y) {
您可以YUI().use()
多次调用,每个都将提供其自己的版本以及Y
所请求的模块。
此外,您可以嵌套调用use()
YUI().use('moduleA', 'moduleB', ... , function (Y) {
// ......
Y.use('moduleC', function (X) {
对于第二个实例,我将其用作X
回调的参数,因此您可以实际使用可用的位置和不可用的X
位置。其他模块在和中都可用。或者您可以简单地关闭一个并启动一个单独的模块,每个模块都有自己的模块(参见:http: //yuilibrary.com/yui/docs/yui/yui-multi.html)。'moduleC'
Y
X
Y
YUI().use()
对于外部模块,请在大约 42 分钟后观看此视频。它展示了如何加载外部模块并将它们集成到那个Y
或X
任何你想要调用的模块中。在onProgress
事件的回调中,加载的模块被添加到 YUI 实例中,即Y
通过调用YUI.add()
. Y
提供给回调的参数与YUI.add()
您将在回调中获得的参数相同YUI().use()
。
因此,需要定义外部模块,为每个模块、每个版本或其他模块赋予不同的模块名称,每个模块都指向该版本的相应路径。如果每个版本共享一个公共根路径 ,配置属性base
中的配置groups
(参见:http: //yuilibrary.com/yui/docs/yui/loader.html#example-config )会很方便。
我能想到的两个陷阱。首先,如果外部库将所有内容加载到全局变量中,那么当您加载第二个版本时,首先加载的内容将会有残余。如果这会产生冲突,您可能必须在对该全局对象的引用放入Y
. 这应该在加载整批模块之后完成,可能在onSuccess
回调中,而不是在onProgress
回调中,否则您将删除后续模块的依赖关系。
第二个是有点遥远,解释太长了。由于它可能根本不会发生,让我们稍后再说。