2013-08-06 101 views
-1

依賴這是我的config.js文件的樣子:如何處理與requireJS

require.config({ 
    baseUrl: '../', 
    paths: { 
     jQuery:   'js/jquery-1.10.2.min', 
     uiEffectsCore:  'js/jQueryUIEffectsCore', 
     //Handlebars:  'js/handlebars', 
     SyntaxHighlighter: 'js/syntaxhighlighter/scripts/shCore', 
     shXml:    'js/syntaxhighlighter/scripts/shBrushXml' 
    }, 
    shim: { 
     jQuery: { 
      exports: 'jQuery' 
     }, 
     uiEffectsCore: { 
      deps: ['jQuery'] 
     }, 
     shXml: { 
      deps: ['SyntaxHighlighter'] 
     } 
    } 
}); 

require(['js/main']); 

然後我main.js看起來是這樣的:

define(function(require){ 

    require('jQuery'); 
    require('uiEffectsCore'); 
    require('SyntaxHighlighter'); 
    require('shXml'); 

}); 

我認爲問題是,有是不是define(...)我的shXml文件包裝...我想知道如果我可以做這個工作,而不必使用該包裝。也許出口墊片會做到這一點。

現在,我每次都得到this error

這個問題也被要求here on github.

+0

的問題是,您使用的庫不AMD兼容。您已預先手動指定並加載所有依賴關係,以使您的代碼正常工作。 –

+0

@RobW當然,這就是我現在要做的,只是在我的require.js腳本之前留下常規腳本標記中的syntaxhighlighter東西 – sherlock

+0

我相信你可以將相關性放在'shim.shXml.deps'數組中,請參閱http: //requirejs.org/docs/api.html –

回答

1

Check out this article,也從GitHub。我測試了這一點,並將其與該線在這裏的偉大工程,但你要更換你的brush.js文件的第一行(SyntaxHighlighter的裏面):

SyntaxHighlighter = SyntaxHighlighter || (typeof require !== 'undefined'? require('shCore').SyntaxHighlighter : null); 

我甚至不知道爲什麼修復該問題但這樣做,你可以加載你的腳本是這樣的:

define(function(require){ 

    require('jQuery'); 
    require('uiEffectsCore'); 
    require('SyntaxHighlighter'); 
    require('shXml'); 
    require('shCss'); 
    require('shJs'); 
    require('Raphael'); 

而且你需要依賴於你的配置墊片:

paths: { 
     SyntaxHighlighter: 'js/syntaxhighlighter/scripts/shCore', 
     shXml:    'js/syntaxhighlighter/scripts/shBrushXml', 
     shCss:    'js/syntaxhighlighter/scripts/shBrushCss', 
     shJs:    'js/syntaxhighlighter/scripts/shBrushJScript' 
    }, 
    shim: { 
     shXml: { 
      deps: ['SyntaxHighlighter'] 
     }, 
     shCss: { 
      deps: ['SyntaxHighlighter'] 
     }, 
     shJs: { 
      deps: ['SyntaxHighlighter'] 
     } 
    }