AMD(require.js)如何处理单个非amd js文件中的多个类?

时间:2013-01-10 19:02:20

标签: javascript requirejs amd

我正在使用a bunch of components from the MootoolsMore library,它们都被编译成一个.js文件。有没有办法在垫片中定义一次库并且可以访问其中的所有类?以下不起作用,但我怎么做这样的事情?

shim:{
 mootoolsMore:{
  deps    : ["mootools"]
  exports : ["Slider", "Sortables"]
 }
}

// then inside my module I could access the Slider component like so
define( function(require) {
  var Slider = require('mootoolsMore').Slider

1 个答案:

答案 0 :(得分:1)

不需要仅针对RequireJS的“填充”功能。您可以使用标准的AMD加载器API:

require(['js!path/to/MooToolsCore.js'], function(){
    // nesting in order to insure that Moo Core runs first
    require(['js!path/to/MooToolsMore.js'], function(){
        // Your Slider and Sortables will be in global.
        // just use them.
        window.Slider(/* ... */)
    })
})

注意,RequireJS不需要“js!”插件要显式声明,但是,只需查看文件的扩展名。如果它是“.js”,它通过“js”插件运行文件。这是非标准行为(如在AMD规范中没有),但在RequireJS上你应该能够替换如下行:

['js!path/to/MooToolsMore.js']

用这个:

['path/to/MooToolsMore.js']