【问题标题】:Backbone -managing app viewsBackbone - 管理应用程序视图
【发布时间】:2015-08-06 23:26:33
【问题描述】:

基本上我要做的是找到管理我所有视图的最佳方法。所以我的所有视图都会在必要时关闭并创建。正因为如此,我在我的内部创建了一个单独的管理器Backbone.Routerinstance 处理我的所有观点如下。

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 视图只创建一次,因为我认为不需要更改它们的内容。而且我还想在加载视图时避免出现空格...

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

所以问题是,像这样设置这些视图是一个好习惯吗?还是应该在触发任何路线时始终重新创建视图?

【问题讨论】:

    标签: javascript backbone.js


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2013-07-11
      • 1970-01-01
      • 2010-12-22
      • 1970-01-01
      • 1970-01-01
      • 2018-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多