1. ホーム
  2. javascript

node.jsのrequire()はどのように動作するのですか?

2023-08-26 04:42:56

質問

これを試してみました。

// mod.js
var a = 1;
this.b = 2;
exports.c = 3;

// test.js
var mod = require('./mod.js');
console.log(mod.a);    // undefined
console.log(mod.b);    // 2
console.log(mod.c);    // 3, so this === exports?

ということで、require()はこのような実装になるのかなと想像しています。

var require = function (file) {
    var exports = {};
    var run = function (file) {
        // include "file" here and run
    };
    run.apply(exports, [file]);
    return exports;
}

これでいいのでしょうか?require()を理解するのを助けてください、または、どこでソースコードを見つけることができますか。ありがとうございます!

どのように解決するのですか?

ソースコードは ここに . exports / require はキーワードではなく、グローバル変数です。あなたのメインスクリプトは ラップ の前に 開始 のようなすべてのグローバルを持つ関数で require , process などをその文脈で表示します。

module.js 自身は require() を使っていますが、これは別のrequire関数であり、それは を定義しています。 というファイルの中で定義されています。

上記の副作用:モジュールの真ん中(どの関数にも属さない)に "return" ステートメントがあっても全く問題なく、事実上 "commenting out" 残りのコード