6

backbone.js の最初の数行では、なぜ undefined を export や require でテストしているのかわかりません。

彼らがそれを設定しなかったので、それが未定義になることは明らかです。それがグローバル(ウィンドウ)オブジェクトである場合、彼らはそれを明示的に言ったでしょう。

root.exports  // they don't do this
root.require

なぜ彼らはこれをチェックするのですか?

typeof exports !== 'undefined'

この

if (!_ && (typeof require !== 'undefined'))

そしてこれを上から

!_

完全なスニペット

(function(){
    var root = this, 
        previousBackbone = root.Backbone,
        slice = Array.prototype.slice,      
        splice = Array.prototype.splice,
        _ = root._,
        Backbone;
    if (typeof exports !== 'undefined') {
        Backbone = exports;
    } else {
        Backbone = root.Backbone = {};
    }
    Backbone.VERSION = '0.9.2';
    if (!_ && (typeof require !== 'undefined')) {
        _ = require('underscore');
    }
4

1 に答える 1

4

それは、私が信じているモジュールBackbone.jsとして使用できるようにするためのものです。Common.js詳細はこちら: http://wiki.commonjs.org/wiki/Modules/1.1

具体的には、このビット:

モジュールには、「exports」と呼ばれる自由変数があります。これは、モジュールが実行時に API を追加できるオブジェクトです。

また、このビットは、次に関するあなたの質問をカバーしていますrequire

モジュールには、関数である自由変数「require」があります。「require」関数は、モジュール識別子を受け入れます。「require」は、外部モジュールのエクスポートされた API を返します。

于 2012-09-27T13:51:46.323 に答える