Backbone - 管理应用视图

时间:2015-05-25 13:03:56

标签: javascript backbone.js

基本上我正在尝试做的是找到管理我所有视图的最佳方式。所以我的所有视图都在必要时关闭并创建。因此,我在我的内部创建了一个单独的管理器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();
                });
            });
...
}

正如您所看到的, TopMenu 工具提示视图仅创建一次,因为我不希望有任何更改其内容的需要。而且我还想在加载视图时避免使用空格......

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

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

1 个答案:

答案 0 :(得分:0)

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

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

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

  • 重新渲染视图也需要很长时间。那些难以渲染的视图可以隐藏,而不是删除。
  • Zombie views。旧视图应该安全关闭,事件解除绑定等。