Backbone.js 主干网和requirejs应用程序中的应用程序结构
我正在使用主干网和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
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();
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开发者工具的网络表进行检查,如果你点击返回路径,文件将不会再次被请求。好的。另一个问题是,当我再次点击路线时,视图将被重新渲染。那么所有事件等都将被冗余绑定?在生成新视图之前,是否应该删除以前的视图?如果是,在这种情况下我该如何处理?