1

我想在 AMD 环境中使用Draw2D touch 。该库本身不兼容 AMD,但取决于其他一些 - AMD 兼容 - 库,如 Raphael 和 Shifty。所以我为 Draw2D 设置了一个 shim 配置(包括相关部分):

requirejs.config({
    paths : {
        // ...
        'shifty': 'lib/shifty',
        'raphael': 'lib/raphael',
        'draw2d': 'lib/draw2d-2.10.1.min'
    },
    shim: {
        // ...
        'shifty': {
            exports: 'Tweenable'
        },
        'raphael': {
            exports: 'Raphael'
        },
        'draw2d': {
            exports: 'draw2d',
            deps: ['jquery', 'Class', 'raphael', 'json2', 'canvg',
                   'rgbcolor', 'jquery.layout', 'jquery.contextmenu',
                   'jquery.touch_punch', 'jquery.autoresize', 'shifty',
                   'plugins-js', 'jquery.ui.custom']
        }
    }
});

Draw2D 尝试全局访问 Raphael(和 Shifty):

function() {
    Raphael.fn.group
    ...
}

即使我得到了垫片配置,ReferenceError因为 Raphael 没有定义。

问题基本上是,如何加载不符合 AMD 但依赖于 AMD 兼容库的库。

4

0 回答 0