SoundManager2 flash 组件需要一个特定的全局 JavaScript 变量 (soundManager) 才能出现在全局范围内。通过这种方式,Flash 播放器与 SoundManager2 JavaScript API 进行通信。
问题是,当您想使用 AMD (require.js) 构建 Web 应用程序时,您必须做出妥协并让这个全局变量存在。
有什么办法不破坏 AMD 构建包括 SoundManager 在内的应用程序的方式?
SoundManager2 flash 组件需要一个特定的全局 JavaScript 变量 (soundManager) 才能出现在全局范围内。通过这种方式,Flash 播放器与 SoundManager2 JavaScript API 进行通信。
问题是,当您想使用 AMD (require.js) 构建 Web 应用程序时,您必须做出妥协并让这个全局变量存在。
有什么办法不破坏 AMD 构建包括 SoundManager 在内的应用程序的方式?
使用 RequireJS shim 配置将您的非 AMD 库包装为导出全局变量的模块: http ://requirejs.org/docs/api.html#config-shim
requirejs.config({
paths: {
'soundmanager2' : 'some/path/soundmanager2'
},
shim: {
'soundmanager2': {
exports: 'soundManager'
}
}
});
然后,像任何其他依赖项一样需要 SoundManager2 shim,并在您自己的模块代码中使用它:
define(['soundmanager2'], function(soundManager) {
soundManager.setup({ ... });
soundManager.beginDelayedInit();
// The following may help Flash see the global.
window.soundManager = soundManager;
return soundManager;
});