我正在编写一个用户以线性方式移动的 Backbone 应用程序。该应用程序像电视节目一样工作,旁白引导用户从一个场景到另一个场景。
为了实现这个目标,我有一个父情节视图,负责在正确的时间加载正确的场景视图。到目前为止,我对它的功能感到满意。
我需要添加让用户在闲暇时从一个场景跳到另一个场景的功能。在应用程序的整个生命周期中,可能会多次查看同一场景。我的问题是我是否应该在每次加载同一个场景时创建一个新的场景视图,或者我是否应该创建一个场景的实例,然后在用户加载它第二个、第三个或第四个时重新使用它时间。
下面的示例显示了到目前为止我是如何重用场景的。
loadSceneView: function()
{
var sceneIndex = this.model.getCurrentIndex();
if(this.scenes[sceneIndex])
{
this.scenes[sceneIndex].render();
console.log('Scene: ' + sceneIndex + ' already loaded. Reusing');
}
else
{
console.log('Loading Scene: ' + sceneIndex);
switch(sceneIndex)
{
case 0:
this.scenes[sceneIndex] = new cith.Views.Scene1();
break;
case 1:
this.scenes[sceneIndex] = new cith.Views.Scene2();
break;
case 2:
this.scenes[sceneIndex] = new cith.Views.Scene3();
break;
}
}
this.currentScene = this.scenes[sceneIndex];
this.listenTo(this.currentScene, 'scene:ended', this.goToNextScene);
$('#scene').html(this.currentScene.el);
}
基本上,如果场景数组具有与当前匹配的索引,sceneIndex
只需将该视图加载到 dom 中。否则,创建它,在场景数组中保留对它的引用并将其加载到 DOM 中。
谁能帮我确定这种方法的优缺点?具体来说,我关心可能的最佳性能以及避免内存泄漏作为保留对我(或可能不会)再次使用的这些对象的引用的副作用。
谢谢。