【问题标题】:Application structure in backbone and requirejs app主干和requirejs应用程序中的应用程序结构
【发布时间】:2013-03-13 09:18:07
【问题描述】:

我正在使用骨干网和 requirejs 开发应用程序。我已经像这样构建了应用程序:

  1. 具有<script data-main="app.js" src="vendor-libraries/require.js"></script> 的主 index.html 文件
  2. 在 app.js 中我这样做:

    require.config({
    
        paths:{
    //all paths here
    },
    
    shim: {
        // all shims here
        },
        }
     });
    
         require(['jquery',
     'Backbone',
     'views/master',
     'views/dashboard',
     //all other views are loaded as dependencies here...
    
     ],function($,Backbone,masterView,dashboardView, .....){
    
         var Router=Backbone.Router.extend({
             routes:{
                  "":"loadDashboard",
                  "home":"loadDashboard",
                  //all routes paths go here
                },
    
            initialize:function(){
            this.children={
            dashboardView: new dashboardView(),
            //all views initialized as the dashboard view
            }
        },
    
        loadDashboard: function(){
        this.children.dashboardView.render();
        },
    
        //functions for all routes here...
    
        });
    
    var router = new Router();
    var view=new masterView();
    Backbone.history.start();
    

    });

  3. 在主视图中,我只需单击按钮即可导航到各个视图。

现在,我刚刚开始使用这个应用程序,我担心按照上述工作流程可能会导致一次加载所有视图文件。在所有视图中,我都加载了几个模板。那么我最终会在页面渲染之前加载所有的 html 吗?如果是,上面的方法应该修改什么?

【问题讨论】:

    标签: backbone.js require backbone-routing


    【解决方案1】:

    如果要在您的页面上加载太多东西,您可以只需要您的视图文件,因为它们是需要的。

    例如,假设您将有一个用户列表视图,它可以从您的路由器以这种方式加载:

    routes: {
        ...
        'userslist' : 'loadUsersList'
    }
    
    loadUsersList: function() {
    
        require('views/userslist',function(UserListView) {
    
            UserListView.render();
        });
    
    }
    

    【讨论】:

    • 所以每次用户导航到这条路线时它会请求加载这个视图吗?
    • 是的,它只会在浏览器点击路由时才请求查看文件,无论如何在第一次加载文件之后,因此不会再次下载......
    • 这是由requirejs管理的,不会再次下载文件?我提到的整个应用流程是否正确?
    • 是的,你可以通过 Chrome 开发者工具的网络表查看,如果你打回路由,文件将不再被请求。
    • 好的。另一个问题是,当我再次访问该路线时,视图将被重新渲染。所以所有的事件等都会被冗余绑定?在生成新视图之前不应该删除以前的视图吗?如果是,在这种情况下我该如何处理?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-27
    相关资源
    最近更新 更多