基本上我正在尝试做的是找到管理我所有 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();
});
});
...
}
如您所见,TopMenu 和Tooltip 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/