我正在努力将YUI2代码更改为YUI 2合3形式。我需要在我的JS代码中访问Y.YUI2对象(雅虎对象)。
我需要这个对象是全局的,因为这个对象在JS代码中的数百个地方被使用,所以我想要一个更简单的方式来访问它,而不是通过回调来访问它每次我需要it.As时,我只有一个超文本标记语言文件,应该有一个更容易的方法。
我正在使用SimpleYUI。所以我的主要目标是让全局Y对象获得一个YUI2值,.I不能通过Y.use(.....)做到这一点。因为use()不会阻塞其余代码和下面的代码,所以它需要YAHOO对象。
谢谢
发布于 2012-03-26 19:27:06
最近,我正在将我的项目从YUI 2.x迁移到YUI 3.x。在这里,我想分享我的经验和解决方案。
首先,我猜你写了一篇文章:"Working with YUI 2 in 3“(http://yuilibrary.com/yui/docs/yui/yui-yui2.html)。不幸的是,这种方法迫使您将所有现有的JS代码都包含到称为模块的新结构中,例如
YUI.add('mymodule-uses-yui2', function(Y) {
var YAHOO = Y.YUI2;
/* my old JS code based on YUI 2 placed here */
}, '1.0', {requires: 'yui2-modules'});然后在沙箱中使用这些模块:
YUI().use('...', 'yui2-modules', 'mymodule-uses-yui2', function(Y) {
var YAHOO = Y.YUI2;
});这会导致在现有代码库上进行大量工作,以创建模块和更正依赖项。
我发现我可以在重写的第一阶段避免它:我一如既往地在脚本标签中统计地加载所有YUI 2组件。在这种情况下,全局YAHOO对象随处可用,并且我的旧代码可以正常工作。然后我开始用YUI 3写一个新的代码(或者重写旧代码),就像我的旧代码一样--一点也没有混淆!你也可以一步一步地将你的旧代码覆盖到新的时尚模块(YUI.add)中,同时仍然在那里使用全球雅虎( global YAHOO )(不使用Y.YUI2)。而且你不需要强迫你所有的力量一次将所有的旧代码都包含到新的模块中。
我还发现每次进入YUI().use(...)时,SimpleYUI比沙箱对我更有用。因为目前我在页面上有很多地方,我只需要一小部分JS代码。SimpleYUI做得更好,如果你在页面上有几个地方的代码,但还没有时间完成重构。
https://stackoverflow.com/questions/9490709
复制相似问题