2013-01-10 66 views
2

我使用的是a bunch of components from the MootoolsMore library,它們都被編譯成一個.js文件。有沒有一種方法可以在墊片中定義一次圖書館,並可以訪問其中的所有課程?以下不起作用,但我會如何做這樣的事情?AMD(require.js)如何處理單個非amd 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 
+0

如果你已經有了一個答案對於這個使用require.js,你可以在這裏發佈它爲了別人的利益嗎?就我而言,我有一個類似的問題,我正在努力解決 – JamieJag

回答

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']