0

我成功地将我的页面从 YUI2 迁移到 YUI3 并且在升级时我使用 YUI3 的动态库加载仅包括yui-min.js和 using YUI().use(...) ,但现在我想删除本地 YUI2 JS 并在本地添加 YUI3。

我创建了一个全局变量var Y = YUI().use('*',function(Y){});并将其更改yui-min.jsyui-core-min.js并添加了我想要使用的库,并且它在更改时效果很好Y instead YUI()

Y.use('datatable','datasource', function(Y){
    ...
    fcTable = new Y.DataTable(...);
});

但我想知道我是否只能Y.use(...)第一次调用并且只能使用全局Y变量,例如:

    ...
    fcTable = new Y.DataTable(...);

我认为这可能会使加载速度更快,推荐吗?

谢谢4你的时间;)

4

1 回答 1

3

因为use()对于当前不在页面上的模块是异步操作,所以您正在设置竞争条件。忽略这一点,有可能,是的。

Y.use('datatable');

Y.DataTable在模块解析并附加时全局可用。唯一的麻烦是你不能保证什么时候会。use()这就是回调的原因。

如果所有模块依赖项已经静态地在页面上(在 <script> 中),use()则将是同步的,这将允许

Y.use('datatable');
var table = new Y.DataTable({ … });

但是,如果您在页面上包含模块脚本并调用use('*'),则无需Y.use('datatable')稍后显式调用,因为*附加了所有内容。

于 2012-05-25T18:05:01.260 回答