Backbone - 管理应用程序视图

Ale*_*xus 5 javascript backbone.js

基本上我想要做的,就是找到管理的最佳方式我所有的views.So所有我的观点得到闭合时,它的必要.而正因为如此,我创建了我内的单独管理器创建Backbone.Router实例,它需要照顾我的所有观点如下.

router.js

    AppRouter.prototype.initialize = function () {
             .......
            var eMgr = _.extend({}, Backbone.Events); 
            var vMgr = new ViewManager(); 

            vMgr.add(new vTopMenu({eMgr: eMgr}));
            vMgr.add(new vTooltip({eMgr: eMgr}));

            app_router.on('route:MainMenu', function () {
                vMgr.close_all_views(function(){
                    vMgr.add(new vmainMenu({eMgr: eMgr}));
                    vMgr.render_all_views();
                });
            });

            app_router.on('route:showMap', function () {
                vMgr.close_all_views(function(){
                    vMgr.add(new vMapMenu());
                    vMgr.render_all_views();
                });
            });
...
}
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,TopMenuTooltip视图只创建一次,因为我不希望有任何需要更改其内容.我还想在加载视图时避免使用空格...

我不确定这是不是一个好主意,因为一旦我从一条路线导航到另一条路线,所有其他视图都被关闭并重新启动.

所以问题是,将这些观点设置为这样是一种好习惯吗?或者我应该在触发任何路线时始终重新创建视图吗?

Kri*_* Ku 0

如果需要,可以缓存某些视图。缓存的好处取决于您在视图中显示的内容。在决定将视图放入缓存时,您必须考虑几个方面:

  • 较大的缓存大小会影响性能,因此仅选择经常用于缓存的缓存。
  • 缓存对于那些下载额外资源的视图很重要。
  • 请注意,未使用的视图会占用内存资源。

此外,对于缓存和未缓存的情况,您必须记住:

  • 重新渲染视图也可能需要大量时间。那些难以渲染的视图可以只是隐藏,而不是删除。
  • 僵尸观点。旧视图应该安全关闭,事件解除绑定等。