我想在 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 兼容库的库。