核心是 js 的加载模块,通过正则匹配模块以及模块的依赖关系,保证文件加载的先后顺序,根据文件的路径对加载过的文件做了缓存

补充

补充:RequireJS 的核心原理可以拆成三块:

  1. 依赖解析 :使用 deps 数组收集当前模块依赖,结合 baseUrl / paths 配置把模块名解析为真实 URL。
  2. 动态加载 :通过动态创建 <script> 标签并设置 src,按依赖顺序依次加载;脚本执行完后立即 removeChild。
  3. 避免重复加载 :维护一个 moduleStore(或 scriptLoading 队列),每个 URL 只发一次请求;后续模块依赖同一文件时直接复用已加载完成的回调(Promise 化的依赖收集器)。

简化版伪代码示意:

const moduleStore = {}
function loadModule(name, cb) {
  if (moduleStore[name]) return cb(moduleStore[name].exports)
  const script = document.createElement('script')
  script.src = requirejs.toUrl(name)
  script.onload = () => {
    moduleStore[name] = { exports: define.amd ? require(name) : window[name] }
    cb(moduleStore[name].exports)
  }
  document.head.appendChild(script)
}

来源整理自:vue3js.cn 面试官系列