我成功地将我的页面从YUI2迁移到YUI3,在升级时我使用的是YUI3的动态库加载,仅包括yui-min.js
并使用YUI().use(...)
,但现在我要删除本地YUI2 JS并在本地添加YUI3。
我创建了一个全局变量var Y = YUI().use('*',function(Y){});
,并将yui-min.js
更改为yui-core-min.js
,并添加了我想要使用的库,它可以很好地更改Y instead YUI()
。
Y.use('datatable','datasource', function(Y){
...
fcTable = new Y.DataTable(...);
});
但我想知道我是否只能第一次拨打Y.use(...)
并且只能使用全局Y
变量,如:
...
fcTable = new Y.DataTable(...);
我认为它可能会使装载更快,这是推荐的吗?
谢谢你的时间;)
答案 0 :(得分:3)
因为当前不在页面上的模块的use()
是异步操作,所以您正在设置竞争条件。忽略这一点,是可能的,是的。
Y.use('datatable');
当模块结算并附加时,将使Y.DataTable
全局可用。唯一的麻烦是你不能保证什么时候会这样。这就是use()
回调的原因。
如果所有模块依赖关系已静态存在于页面上(在< script>中),use()
将是同步的,这将允许
Y.use('datatable');
var table = new Y.DataTable({ … });
但是,如果您在页面上包含模块脚本并调用use('*')
,那么以后就不需要显式调用Y.use('datatable')
,因为*
会附加所有内容。