2012-06-15 11 views
8

Powiedzmy, że moja aplikacja działa, ale uwielbiam się uczyć i znajdować najlepszy sposób robienia rzeczy.
Naprawdę doceniam ten wpis na temat Reducing Backbone Routers To Nothing More Than Configuration.
Poniższy bbclonemail, który nie jest używany, wymaga.W jaki sposób powinienem załadować moją aplikację internetową za pomocą narzędzia Backbone.Marionette i wymagać JS

Właściwie moja implementacja jest monolityczny blok (app.js, router.js).

Oto moje pytania:
1) Co powinieneś zwrócić: router modulerouter.js?
2) Jak usunąć The Callback Functions z router.js?
3) Co powinieneś zwrócić: app moduleapp.js?
4) W jaki sposób należy oddzielić app.js w wielu innych aplikacjach (na przykład: główny, zadania, projekty)


app.js

// app.js 
define([ 
'router' 
// some modules 
], 
function (router, Backbone, HeaderView) 
{ 
    "use strict"; 
    var myApp = new Backbone.Marionette.Application(); 

    myApp.addRegions({ 
     header: '#header', 
     sidebar: '#sidebar', 
     mainColumn: '#main-column', 
     rightColumn: '#right-column' 
    }); 

    myApp.initHeader = function() { 
     var headerView = new HeaderView(); 
     myApp.header.show(headerView); 
    } 

    // many others many views 

    myApp.start(); 

    myApp.initialize = function() { 
     router.initialize(); 
     Backbone.history.start(); 
    } 

    return myApp; 

}); 

router.js

// router.js 
define([ 
// some modules 
], 
function (Backbone) 
{ 
    "use strict"; 
    var AppRouter = Backbone.Marionette.AppRouter.extend({ 

     routes: { 
      tasks: 'tasks', 
      projects: 'projects', 
      // many others keys/values 
      '*defaults': 'home' 
     }, 

     getApp: function() 
     { 
      var mainApp; 
      require(['js/app'], function (app) { 
       mainApp = app; 
      }); 
      return mainApp; 
     }, 

     home: function() 
     { 
      var app = this.getApp(); 
      app.initHeader(); 
      app.initSidebar(); 
      app.initTaskDetails(); 
     }, 

     // many others callbacks 

    }); 

    var initialize = function() { 
     new AppRouter; 
    }; 
    return { 
     initialize: initialize 
    }; 

}); 

Odpowiedz

1

Dla części Router należy zrobić tak:

router.js

// router.js 
define([ 
    'rooterController' 
// some modules 
], 
function (Backbone, rooterController) 
{ 
    "use strict"; 
    var AppRouter = Backbone.Marionette.AppRouter.extend({ 

     routes: { 
      tasks: 'tasks', 
      projects: 'projects', 
      // many others keys/values 
      '*defaults': 'home' 
     } 
    }); 
    return new AppRouter({constroller: rooterController}) 
}); 
Powiązane problemy