0
  // Save a reference to the global object (`window` in the browser, `exports`
  // on the server).
  var root = this;

輸出とは?root.Backbone をオブジェクト リテラルに設定することは理解できます。プロパティを追加できるようになったからです。

ただし、上記のソースのコメントは、thisブラウザのウィンドウとサーバーのエクスポートを指していることを意味しますか?

これは本当ですか?

私が尋ねる理由は、このコードがここにあるからです:

  var Backbone;
  if (typeof exports !== 'undefined') {
    Backbone = exports;
  } else {
    Backbone = root.Backbone = {};
  }

ライブラリが含まれているクロージャーの目的を無効にして、名前空間の外側にあるすべてのモジュールを (エクスポートに) 定義するのはなぜですか。

4

1 に答える 1

2

exportsCommonJSモジュール形式でエクスポートされたオブジェクトの名前で、主にnode.jsで使用されます。

CommonJS では、すべての JavaScript ソース ファイルはモジュールであり、割り当てたものはすべてexports、そのファイルの「戻り値」になります。したがって、バックボーン ソース コードの行は次のとおりです。

Backbone = exports;

発言: 「このモジュールのエクスポート オブジェクトとして Backbone を定義します。」後でBackbone.ModelBackboneルート オブジェクトなどにプロパティをアタッチすると、エクスポート値にアタッチされます。

于 2013-01-29T20:15:00.927 に答える