Backbone - 管理应用视图

5

我想做的基本上是找到最好的方法来管理所有视图,让它们在必要时关闭和创建。因此,我在我的 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();
                });
            });
...
}

如您所见,TopMenuTooltip视图仅被创建一次,因为我不希望更改它们的内容,并且在加载视图时我也想避免空白空间...
但我不确定这是否是一个好主意,因为当我从一个路由导航到另一个路由时,所有其他视图都会关闭并重新初始化。
因此,问题是,将这些视图设置成这样是一个好做法吗?还是应该在每个路由被触发时都重新创建视图?
1个回答

0

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

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

此外,在缓存和非缓存情况下,您还需牢记:

  • 重新渲染视图也可能需要相当长的时间。难以渲染的视图可以被隐藏而不是删除。
  • Zombie views。旧视图应安全关闭,取消绑定事件等。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接