2015-04-03 103 views
-1

我無法理解requirejs.config()函數。requirejs.config()做什麼?

requirejs.config({ 
    paths: { 
     'text': '../lib/require/text', 
     'durandal':'../lib/durandal/js', 
     'plugins' : '../lib/durandal/js/plugins', 
     'transitions' : '../lib/durandal/js/transitions', 
     'knockout': '../lib/knockout/knockout-3.1.0', 
     'bootstrap': '../lib/bootstrap/js/bootstrap', 
     'jquery': '../lib/jquery/jquery-1.9.1' 
    }, 
    shim: { 
     'bootstrap': { 
      deps: ['jquery'], 
      exports: 'jQuery' 
     } 
    } 
}); 

該功能做什麼?請不要將我引導至文檔,因爲我已經閱讀並仍然覺得很困惑。我需要一個關於這個函數做什麼的簡單解釋。

這些腳本是異步加載的嗎?

回答

1

它爲腳本路徑創建別名ant告訴如何在加載時解釋bootstrap(非AMD腳本)。沒有任何裝載。您有權要求:

// we load two dependencies here 
// `knockout` and `bootstrap` are expanded to values in config 
// .js added to values 
// callback function called when all dependencies are loaded 
require(['knockout', 'bootstap'], function(Knockout, $) { 
    // jQuery is passed to this function as a second parameter 
    // as defined in shim config exports 
}); 
+0

你的意思是說這裏唯一的非AMD腳本是bootstrap嗎? – DesirePRG 2015-04-03 19:54:00

+0

並不是一件壞事。但是shim config用於「amdify」腳本。您可以安全地跳過它並使用全局實例。 – 2015-04-03 20:00:00

0

路徑就像聲明/定義。因此,例如,

jquery: '../bower_components/jquery/dist/jquery', 

您可以稍後加載此庫,如下所示。

define([ 
    'jquery' 
], function (jquery) { 
    //initialize or do something with jquery 
} 

您不必指定庫的絕對路徑。

墊片中,您將定義依賴關係。因此,例如,

paths: { 
    template: '../templates', 
    text: '../bower_components/requirejs-text/text', 
    jquery: '../bower_components/jquery/dist/jquery', 
    backbone: '../bower_components/backbone/backbone', 
    underscore: '../bower_components/underscore/underscore', 
    Router: 'routes/router' 
}, 
shim: { 
    'backbone': ['underscore', 'jquery'], 
    'App': ['backbone'] 
} 

這裏骨幹取決於強調的jQuery。所以這兩個庫將在骨幹網開始加載之前加載。同樣應用程序將加載骨幹網後加載。

如果您熟悉骨幹和快遞,您可能會發現這個回購有用。

https://github.com/sohel-rana/backbone-express-boilerplate

+0

所以如果有任何js依賴於另一個js,我必須將它們放入墊片中? – DesirePRG 2015-04-03 20:05:31

+0

是的,你必須在墊片中定義它們。因爲JS會異步加載。但通常你會有依賴於其他庫的lib。例如,一個jquery插件需要先加載jquery。所以你必須添加jQuery作爲該插件的依賴。 – Sohel 2015-04-03 20:21:36