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()函数的一个简单介绍。

posted @ 2023-03-16 10:21  Li_pk  阅读(18)  评论(0)    收藏  举报