主干 + 木偶 - 模型/集合的内存管理最佳实践

Backbone + Marionette - Memory managment best practices for Models/Collections?

本文关键字:管理 内存 最佳 集合 木偶 模型 主干      更新时间:2023-09-26

使用 BackboneMarionette 销毁模型/集合时有哪些最佳实践?我知道视图是由木偶自动管理的内存(如果使用正确的话(,但是模型/集合呢?你什么时候摧毁它们?是当你的视图被破坏时,例如下面的代码(它是 TypeScript 而不是 JavaScript(还是?

class SomeItemView extends Marionette.ItemView<Backbone.Model> {
    destroy() {
        super.destroy();
        delete this.model; // is this the best way to destroy a model/collection?
    }
}

您可能永远不需要显式删除模型/集合。相反,只要确保您没有留下任何对它们的挂起引用。

生成挂起引用的最常见方法是当您通过全局范围访问模型时,以及当您使用 model.on 而不是 listener.listenTo(model 绑定事件侦听器时。

查看木偶控制器和区域可能会很有用。

使用时

var region = new Marionette.Region({ el: "#container" }); 

您可以使用它在内部呈现视图:

var some_itemview = new Some_Itemview(); 
region.show(some_itemview); 

如果使用木偶控制器实例化模型和视图。

var some_model = new Backbone.Model(); 
//Set some properties on the model; 
var some_itemview = new Some_Itemview({ model: some_model }); 
region.show(some_itemview); 

然后,当您想要清理视图时,只需调用:

region.close(); 

您还可以使用region.show(another_view);它将自动清理上一个视图。

视图和相关模型应被销毁,并且视图是对模型对象的唯一引用。