注:私のCoffeeScriptは錆びているので、JSでこれに答えていますが、アイデアは翻訳されるべきです。
明らかに、これを解決する1つの方法は、すべてのビューに親クラスを与えてから、handleErrorのようなメソッドをそのクラスに配置することです。ただし、メソッドを追加する方法のような、より「ミックスイン」を探している場合は、それも可能です。
バックボーンビューは、次のように、extendメソッドへの引数で初期化されます。
var MyView = Backbone.View.extend({
someMethod: function(){ doSomething();}
});
その議論は魔法のようなものではありません。これは単なるJSオブジェクトなので、次のように_.extendを使用して拡張できます。
var myCommonMethods = {
handleError: function ...
}
var MyView = Backbone.View.extend(_({
someMethod: function(){ doSomething();}
}, myCommonMethods));
このアプローチの利点は、必要な数のメソッドセットを「ミックスイン」できることですが、親クラスを使用する場合は、はるかに制約があります。ただし、親クラスのアプローチはより単純です。
var BaseView = {
handleError: function ...
}
var MyView = BaseView.extend({
someMethod: function(){ doSomething();}
});
だからそれは本当にあなたの特定のニーズに依存します。
個人的には、私のコードでは両方のアプローチを使用しています。すべてのビューが拡張するBaseViewがあり、非常に一般的なロジック(ほとんどのビューが使用するテンプレートシステムなど)をその中に入れています。次に、機能を追加するさまざまなメソッドセットの「ミックスイン」があります。
たとえば、elとして「select」要素を持つすべてのビューのメソッドのミックスインセットがあります。これにより、これらのビューには、意味のある基本クラスがありますが、共通のメソッドセットもあります(たとえば、すべてのビューには、ビューのel内の特定のオプションに「selected」属性を追加できるselectOptionメソッドがあります)。お役に立てば幸いです。