【问题标题】:How should I bootstrap my web app using Backbone.Marionette and requireJs我应该如何使用 Backbone.Marionette 和 requireJs 引导我的网络应用程序
【发布时间】:2012-06-18 09:56:30
【问题描述】:

假设我的应用可以运行,但我喜欢学习并找到最佳的做事方式。
我非常感谢这篇关于 Reducing Backbone Routers To Nothing More Than Configuration 的帖子。
以及以下未使用的bbclonemail 需要。

实际上我的实现是一个整体块(app.jsrouter.js)。

这是我的问题:
1) router module router.js 应该返回什么?
2) 我应该如何从router.js 中删除The Callback Functions
3) app module app.js 应该返回什么?
4)我应该如何在许多其他应用程序中解耦app.js(例如:main、tasks、projects)


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
    };

});

【问题讨论】:

    标签: backbone.js requirejs marionette backbone-routing


    【解决方案1】:

    对于路由器部分,您应该像这样:

    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})
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多