AMD (require.js)如何在一个非AMD js文件中处理多个类?

How does AMD (require.js) handle multiple classes in a single non-amd js file?

本文关键字:AMD js 处理 文件 require 一个      更新时间:2023-09-26

我使用了一堆来自MootoolsMore库的组件,它们都被编译成一个单一的.js文件。是否有一种方法来定义库一次在shim和访问所有类在它?下面的方法不起作用,但是我该怎么做呢?

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

不需要只针对RequireJS的"shim"功能。你可以使用标准的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']