编程语言
首页 > 编程语言> > javascript – Portlet中的YUI版本冲突问题

javascript – Portlet中的YUI版本冲突问题

作者:互联网

我从portlet加载yui.js 3.3.0版本文件,但是使用3.2.0 yui.js文件生活,
所以每当我加载那个页面时,js就会出现错误

G_ENV._loaded [VERSION]未定义 – 此错误发生在yui.js中,使用的是liferay 3.2.0版本.

所以它的替换值就像G_ENV._loaded [3.2.0]那样会抛出一个错误,因为我们从portlet加载了3.3.0版本.

我在portlet中替换了yui.js 3.2.0版本文件但是它抛出了一些其他的js错误.

如何在3.2.0中工作相同或有没有办法更新现有版本的yui?

这是yui.js在这一行中抛出错误的代码

                      if (!G_ENV._loaded[VERSION][name]) {
                            missing.push(name);
                        } else {
                            used[name] = true; // probably css
                        }

任何帮助都会被批评,任何人都会遇到这种问题.

谢谢

解决方法:

由于两个原因,升级,更改或覆盖Liferay中的本机YUI安装非常困难.一,Liferay 6.0的UI框架(Alloy)在YUI 3.2.0上运行.二,本机门户模板将合金ui实例化到全局YUI对象(YUI.AUI)上,这很糟糕,因为它使YUI框架与可怕的实现AUI紧密耦合.您的浏览器在YUI对象上调用此AUI引用,因为页面正在加载并且在window.onload事件之后.如果你试图替换或修改全局YUI对象,它会搞砸合金,Liferay的UI运行在上面.

由于升级是不可能的,下一个最好的选择是引入您想要使用的新YUI模块.另外,您可以试用内置3.4.1的Liferay 6.1 CE,但看起来它还处于beta测试阶段.

这是一个从YUI 3.4.1引入和使用dom-core模块并在Liferay 6中使用它的例子,它在YUI 3.2.0上运行.我从YUI的文档中得到了关于如何将YUI 2模块带入3(http://yuilibrary.com/yui/docs/yui/yui-loader-ext.html)的想法.要快速找出每个模块的依赖关系,您可以使用YUI的在线配置器http://yuilibrary.com/yui/configurator/.

var config = {
ignore : ["skin-sam-overlay","skin-sam-widget","skin-sam-widget-stack","skin-sam-tabview"],
groups: {
    yui341: {
        base: '/js/yui-3.4.1/build/',
        modules:  {
            yui341_yui_base: {
                path: 'yui-base/yui-base.js'
            },
            yui341_oop: {
                path: 'oop/oop.js',
                requires: ['yui341_yui_base']
            },
            yui341_features: {
                path: 'features/features.js',
                requires: ['yui341_yui_base']
            },
            yui341_dom_core: {
                path: 'dom-core/dom-core.js',
                requires: ['yui341_yui_base','yui341_oop','yui341_features']
            }
        }
    }
}
};

YUI(config).use('yui341_dom_core',function(Y){
    //YUI 3.4.1 config modules are now accessable through 'use' call
    console.log(Y.version);  //say hello to the newer version (3.4.1)
    Y.use('dom-core',function(Y){
        //Finally have access to native 3.4.1 module
        console.log(Y.DOM);
    });
});

标签:yui,portlet,javascript,liferay
来源: https://codeday.me/bug/20190826/1733154.html