Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Backbone.js 主干网和requirejs应用程序中的应用程序结构_Backbone.js_Require_Backbone Routing - Fatal编程技术网

Backbone.js 主干网和requirejs应用程序中的应用程序结构

Backbone.js 主干网和requirejs应用程序中的应用程序结构,backbone.js,require,backbone-routing,Backbone.js,Require,Backbone Routing,我正在使用主干网和requirejs开发一个应用程序。我的应用程序结构如下: require.config({ paths:{ //all paths here }, shim: { // all shims here }, } }); require(['jquery', 'Backbone', 'views/master', 'views/dashboard', //all other views are loaded as depe

我正在使用主干网和requirejs开发一个应用程序。我的应用程序结构如下:

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();
  • 包含
    
    
  • 在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();
    
    }))

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


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

    如果页面上要加载的内容太多,您可以根据需要使用视图文件

    例如,假设您将有一个Userlist视图,它可以通过以下方式从路由器加载:

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

    那么,它是否会在用户每次导航到此路由时请求加载此视图?是的,它将仅在浏览器点击路由时请求视图文件,无论如何,在第一次加载文件后,它将不会再次下载该文件…并且这是由requirejs管理的,不会再次下载该文件?我提到的整个应用程序流程是正确的吗?是的,你可以通过Chrome开发者工具的网络表进行检查,如果你点击返回路径,文件将不会再次被请求。好的。另一个问题是,当我再次点击路线时,视图将被重新渲染。那么所有事件等都将被冗余绑定?在生成新视图之前,是否应该删除以前的视图?如果是,在这种情况下我该如何处理?