javascript - YUI3 - 创建全局变量以避免使用 .use(...);

标签 javascript yui yui3 yahoo-api

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

我创建了一个全局变量 var Y = YUI().use('*',function(Y){}); 并更改了 yui-min.jsyui-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/

相关文章:

javascript - offsetParent 暂时消失

javascript - 如何在 YUIDoc 生成的文档中定义自定义主页

javascript - 如何使用基于 YUI 的 EditorGridPanel 和 ColumnTree 替代品来避免 EXTjs?

javascript - addClass - 一个函数而不是 3 个函数(缩短代码)

javascript - YUI3 库中的柯里化(Currying)

javascript - knockout js foreach 绑定(bind)显示 [object object]

javascript - Backbone.js: `extend` 未定义?

php - 当用户关闭(弹出)窗口时调用一些 JavaScript

jquery - 如何通过 JavaScript 检查 Firebug 中的元素?

javascript - 如何从 Javascript 执行 YUI 函数?