1

バックボーン、アンデススコア、jquery などを必要とするビューがあります。

define(['jquery','undescore','backbone','subviewA', 'subviewB'], function($,_,Backbone, SubviewA, SubviewB){
   var View = Backbone.View.extend({
       //other methods here
       render : function() {
           this.subviewA = new SubviewA();
           this.subviewA.render(); 
           this.subviewB = new SubviewB();
           this.subviewB.render();
           return this; 
       }
   });
});

サブビューの例

define(['jquery','undescore','backbone','text!templates/subviewA'], function($,_,Backbone, template){
   var SubviewA = Backbone.View.extend({
       //other methods here
       render : function() {
           this.$el.html(template);
           return this; 
       }
   });
});

私の質問は、サブビューにjquery、undescore、およびbackboneを含める必要があるかどうかです。それらを省略できますか?

編集

各モジュール内でこれらの依存関係を構築しないように毎回指示する必要があるr.jsで原因を尋ねています。

4

2 に答える 2

0

理論的には、ビューで $ または _ 記号を使用しない場合、jquery とアンダースコアをモジュールの直接の依存関係としてリストする必要はありません (それがビューであるかサブビューであるかに関係なく、それは変わりません)。ただし、Backbone.View で直接参照するため、バックボーンを含める必要があります。Backbone シンボルが定義されていることを完全に確認したい場合は、それを依存関係として宣言する必要があります。

一部のライブラリは、AMD モジュールとグローバル変数の両方として自身を登録します (通常、jquery はこれを行います)。Backbone は AMD を直接サポートしておらず、使用方法に関係なくグローバル レベルで登録されています。理論的には依存関係として宣言することはできませんが、バックボーンがロードされる前にrequireがスクリプトをロードしようとするリスクがあり、その場合バックボーンシンボルは定義されません。

追加の文字、したがって追加のスクリプト サイズを除いて、依存関係を冗長に宣言してもあまり問題になりません。

于 2012-08-22T10:53:03.787 に答える
0

使用されていない要件は省略できます。

あなたの例では(省略されたコードを無視してください!)、jqueryand undescore(sic)を削除できますが、(経由で使用するため)削除できませんbackboneBackbone.View.extend

明らかに、要件名と変数の同期を保つ必要があります。

于 2012-08-22T10:53:56.107 に答える