在主干视图中使用 mixins - 哪种是更好的方法

Using mixins in backbone views -which of these is the better approach?

本文关键字:更好 方法 mixins 视图      更新时间:2023-09-26

这两个选项都会导致视图的正确行为。这个问题更多的是关于哪种方法更有效,或者出于其他原因更可取。

如果有其他方法可以完成此操作,也请告诉我!

选项 #1

在主干视图的初始化功能内扩展。

define([
    'mixins/fooMixin',
    'mixins/barMixin'
],
function(FooMixin, BarMixin) {
    var FooBarView = BackboneLayout.extend({
        initialize: function() {
            _.extend(this, FooMixin);
            _.extend(this, BarMixin);
            /* do other things */
        },
        mySpecialMethod: function() {
            this.foo();
            this.bar();
        }
    });
    return FooBarView;
});

选项 #2

在创建主干视图之前,在普通的 javascript 对象上进行扩展。

define([
    'mixins/fooMixin',
    'mixins/barMixin'
],
function(FooMixin, BarMixin) {
    var FooBarViewDefn = {};
    _.extend(FooBarViewDefn, FooMixin, BarMixin, {
        initialize: function() {
            /* do other things */
        },
        mySpecialMethod: function() {
            this.foo();
            this.bar();
        }
    });
    return BackboneLayout.extend(FooBarViewDefn);
});
毫无疑问,

nr 2,因为它只会运行一次,并且每次实例化视图时都会执行#1。