2012-08-24 19 views
5

Ich versuche, mich um Abhängigkeiten in requirjs zu wickeln.Verwirrt über RequireJS-Abhängigkeit

  1. Wenn ich bereits erklärt, Abhängigkeiten für eine Datei shim verwenden, muss ich es wieder erklären müssen, wenn ich das Modul in dieser Datei definieren?
  2. Wenn ich require verwenden, um Abhängigkeiten wie Backbone zu laden, muss ich es neu deklarieren, wenn ich ein Modul definiere, das als Teil von require geladen wird?

Hier ist mein Code so weit:

require.config({ 
    //alias 
    paths: { 
     Backbone: 'libs/backbone-min', 
     Config: 'config', 
     Dom: 'dom', 
     App: 'app' 
    }, 

    //dependencies 
    shim: { 
     'Backbone': ['libs/underscore-min'], 
     'Dom': ['libs/sizzle'] 
    } 
}); 

//used to load and use stuff 
require(['Config','Dom','App','Backbone'], function(){ 

}); 

So in dom.js kann ich definieren nur ein Modul define(function(){...}); und starten Sie Sizzle mit? Oder brauche ich noch, es zu definieren, wie diese define(['libs/sizzle'], function(){...});

Auch wenn ich ein Modul in app.js definieren, muss ich noch Rückgrat laden in define, da ich es bereits als Teil require() enthalten.

Antwort

1

1) Wenn ich bereits Abhängigkeiten für eine Datei deklariert mit Shim, muss ich müssen, um sie wieder zu erklären, wenn ich das Modul in dieser Datei definieren?

Für jedes Modul müssen Sie seine Abhängigkeiten definieren.

2) Wenn ich Abhängigkeiten verwenden, erfordern wie Rückgrat zu laden, muss ich müssen, um sie wieder zu erklären, wenn ich ein Modul definieren, das geladen wird als Teil der erfordern?

Wenn Sie Rückgrat als Abhängigkeit in willkürlichen modyle verwenden möchten könnten Sie schreiben

define(['backbone'], function(Backbone) { .. } 
+0

also im Prinzip 'Shim' einfach lädt die Dateien in einer bestimmten Reihenfolge und' require() 'lädt die Dateien und tun nicht interagieren mit den Modulen –

+5

Die beste Antwort auf Frage, was Shim tatsächlich tut, wurde von RequireJS Schöpfer James Burke gegeben. Sie können diese Nachricht unter folgender URL lesen: https://groups.google.com/d/msg/requirejs/-han0L_Sv_E/iFttMxDkT1UJ – svlada