我成功地将我的页面从 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 而不是 YUI()
。
Y.use('datatable','datasource', function(Y){
...
fcTable = new Y.DataTable(...);
});
但我想知道我是否只能第一次调用 Y.use(...)
并且只能使用全局 Y
变量,例如:
...
fcTable = new Y.DataTable(...);
我认为这可能会使加载速度更快一点,值得推荐吗?
感谢 4 您的时间;)
最佳答案
由于当前不在页面上的模块的 use()
是异步操作,因此您正在设置竞争条件。忽略这一点,这是可能的,是的。
Y.use('datatable');
当模块解析并附加时,将使Y.DataTable
全局可用。唯一的麻烦是你无法保证什么时候会发生。这就是 use()
回调的原因。
如果所有模块依赖项已经静态地位于页面上(在 <script> 中),use()
将是同步的,这将允许
Y.use('datatable');
var table = new Y.DataTable({ … });
但是,如果您在页面上包含模块脚本并调用 use('*')
,则无需显式调用 Y.use('datatable')
稍后,因为 *
附加了所有内容。
关于javascript - YUI3 - 创建全局变量以避免使用 .use(...);,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10751388/