一尘不染

node.js中的require()如何工作?

node.js

我尝试了这个:

// 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()或在哪里可以找到源代码。谢谢!


阅读 231

收藏
2020-07-07

共1个答案

一尘不染

源代码在这里exports/
require不是关键字,而是全局变量。你的主要脚本开始在其拥有所有喜欢全局的功能requireprocess等在其上下文。

请注意,虽然module.js本身正在使用require(),但这是一个不同的require函数,它是在名为“
node.js”的文件中定义

上面的副作用:在模块的中间(不属于任何函数)有“ return”语句,可以有效地“注释”其余代码,这是完全可以的

2020-07-07