require方法的简单原理记录
以想象有一个工具,它能解析代码文件,把每个文件的内容包装在一个立即调用的函数表达式中,还可以跟踪每个函数的返回值,并将所有内容拼接为一个大文件。结果可能类似如下所示:
const modules = {};
function require(name) {
return modules[name];
}
modeles["a.js"] = (function() {
const exports = {};
exports.ClassA = class A {};
return exports;
}());
modules["b.js"] = (function() {
const exports = {};
const a = 1, b = 2;
exports.funcA = function() {return a};
exports.funcB = function() {return b};
return exports;
}());
把所有模块都打包到类似上面的单个文件中之后,可以像下面这样写代码来使用它们:
const aModule = require("a.js");
const bModule = require("b.js");
let clsA = new aModule.ClassA();
let valA = bModule.funcA();
以上代码展示了针对浏览器的代码打包工具(如webpack和Parcel)的基本工作原理,也是对Node程序中使用的require()函数的一个简单介绍。

浙公网安备 33010602011771号