1

Backbone.jsのソースコードを読み込もうとしています。Backboneのトップレベルの名前空間を宣言することになっている次のコードに私はかなり困惑しています。誰かがいくつかの手がかりや説明を与えるのを手伝うことができますか?これを啓発するためのいくつかの便利なリンクも大歓迎です!

// The top-level namespace. All public Backbone classes and modules will
  // be attached to this. Exported for both CommonJS and the browser.
  var Backbone;
  if (typeof exports !== 'undefined') {
    Backbone = exports;
  } else {
    Backbone = root.Backbone = {};
  }
4

1 に答える 1

3

exportsは、コードをモジュール式に提供するために使用されるCommonJSパターンのグローバル(require.jsとnode.jsを考えてください)です。一番上のチェックは、利用可能かどうかを確認することexportsです。そうである場合、バックボーングローバルにはエクスポート参照が与えられるため、モジュール式に適切にエクスポートできます。

AMDスタイルのローダーを介してBackboneをロードしていない場合は、標準のオブジェクトリテラルによって定義されます。

この問題についてさらに読む:

http://dailyjs.com/2010/10/18/modules/

Node.js module.exportsの目的は何ですか?また、それをどのように使用しますか?

Javascriptのエクスポートとプロトタイプとは何ですか?

さらなる解説:

exportsそれ自体は、通常のオブジェクトリテラルを超えたいくつかの追加の「ビーフネス」を運びます。この「頑丈さ」は、CommonJSモジュラーパターンに必要です。Node.jsソースに注意してください:

function Module(id, parent) {
  this.id = id;
  this.exports = {};
  this.parent = parent;
  if (parent && parent.children) {
    parent.children.push(this);
  }

  this.filename = null;
  this.loaded = false;
  this.children = [];
}

module.exports = Module;

Backboneグローバルは、モジュラーパターンに必要なこの3次深度のすべてにアクセスできます。そうでなければ、Backbone単に退屈な古い空のobject定義から始めます。

于 2013-01-03T04:55:10.290 に答える