我尝试了这个:
// 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等在其上下文。
exports
require
process
请注意,虽然module.js本身正在使用require(),但这是一个不同的require函数,它是在名为“ node.js”的文件中定义的
require()
上面的副作用:在模块的中间(不属于任何函数)有“ return”语句,可以有效地“注释”其余代码,这是完全可以的