javascript - 主干 - 管理应用程序 View

标签 javascript backbone.js

基本上我正在尝试做的是找到管理我所有 View 的最佳方法。所以我的所有 View 都会在必要时关闭和创建。因此,我在我的内部创建了一个单独的管理器Backbone.Router实例,它处理我的所有 View ,如下所示。

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

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

所以问题是,像这样设置这些 View 是一种好的做法吗?或者我应该在触发任何路由时始终重新创建 View 吗?

最佳答案

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

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

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

  • 重新渲染 View 也可能需要很长时间。那些难以呈现的 View 可以只是隐藏,而不是删除。
  • Zombie views .旧 View 应该安全关闭,事件解除绑定(bind)等。

关于javascript - 主干 - 管理应用程序 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30439056/

相关文章:

javascript - 内容加载时的 Angular 加载动画

javascript - 如何在不显示 :none? 的情况下删除重复图像

javascript - JQuery Mobile自定义Flipbox设置初始化值

javascript - ajaxPrefilter 与 Backbone

javascript - 如何将参数从 PHP 文件传递​​到 Javascript

javascript - 未捕获的不变违规 : traverseParentPath(. ..) : Cannot traverse from and to the same ID, ``

javascript - 跟踪集合的旧部分和新部分

javascript - 初始化时对 Backbone 集合重新排序

javascript - 将事件函数中的对象作为参数传递给另一个事件函数

javascript - 为什么在附加到 DOM 时要连接 HTML 标签