2012-08-28 9 views
9

Ich plane, Backbone + Require für eine Anwendung zu verwenden, die mehr als 30 Module hat. Anstatt eine separate Route für jedes Modul zu erstellen, plane ich, so etwas zu erstellen.Backbone.js - Dynamisches Routing für eine große Site

Nicht sicher, dass dies eine Best Practice ist. Bitte führen.

routes: { 
    ":module"     : "routeLevelOne", 
    ":module/:id"    : "routeLevelTwo", 
}, 

routeLevelOne: function(module){ 
    require(['views/' + module + 'View',], 
     function(){ 
      require('views/' + module + 'View').render(); 
     } 
    ); 
}, 

routeLevelTwo: function(module, id){ 
    require(['views/' + module + 'View',], 
     function(){ 
      require('views/' + module + 'View').renderWithId(id); 
     } 
    ); 
}, 

Antwort

1

Aus meiner Sicht ist dies völlig in Ordnung und ist die beste Praxis. Es hält Ihren Code schlank und sauber und es ist sehr einfach zu verstehen, was passieren soll.

Die einzige Alternative zu mir wäre etwas wie subroutes. Aber da Ihre "Dispatch" -Logik in allen Modulen gleich zu sein scheint, ist dies wahrscheinlich nicht erforderlich.

6

Ich schrieb eine blog post über dieses Thema. Der Single-Router-Ansatz funktioniert möglicherweise eine Weile, aber Sie müssen sich in Zukunft Sorgen über Skalierbarkeitsprobleme machen.

Als @schacki oben erwähnt, überprüfen Sie mein Backbone.Subroute Plugin, um diese skalierbarer zu machen, und übertragen Sie das Burdon von Unterrouten zu den Entwicklern, die an diesen Modulen arbeiten.