我正在编写一个使用Backbone框架的应用程序,用户可以按线性顺序移动。这个应用程序的工作方式类似于电视节目,即叙述引导用户从场景到场景。
为了实现这个目标,我有一个父级“Episode”视图,负责在正确的时间加载正确的“Scene”视图。到目前为止,我对这个功能感到满意。
我需要添加用户随意跳过场景的能力。在应用程序的生命周期内,可能会多次查看同一场景。我的问题是,当用户第二、第三或第四次加载场景时,我是否应该创建新的“Scene”视图,还是应该创建场景的实例,然后在重复使用它。
下面的示例显示了我迄今为止如何重复使用场景。
基本上,如果场景数组中有与当前
有人能帮我确定这种方法的优缺点吗?具体来说,我关心的是尽可能获得最佳性能以及避免因保留对这些对象的引用而导致的内存泄漏(或者可能不会再次使用)。
谢谢。
为了实现这个目标,我有一个父级“Episode”视图,负责在正确的时间加载正确的“Scene”视图。到目前为止,我对这个功能感到满意。
我需要添加用户随意跳过场景的能力。在应用程序的生命周期内,可能会多次查看同一场景。我的问题是,当用户第二、第三或第四次加载场景时,我是否应该创建新的“Scene”视图,还是应该创建场景的实例,然后在重复使用它。
下面的示例显示了我迄今为止如何重复使用场景。
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中。有人能帮我确定这种方法的优缺点吗?具体来说,我关心的是尽可能获得最佳性能以及避免因保留对这些对象的引用而导致的内存泄漏(或者可能不会再次使用)。
谢谢。