前端/移动开发面试题更新 2026-08-05

请解释 Node.js 中模块是如何被加载和解析的?

前端/移动开发技术原理Node.js

考察说明

考查对 Node.js 模块系统核心机制的理解,包括模块封装、缓存和解析规则。

回答思路

  1. 【回答框架 1】Node.js 模块加载机制基于 CommonJS 规范,每个文件被视为独立模块,模块内部代码被包裹在函数中,提供 exports、require、module 等参数。
  2. 【回答框架 2】模块加载过程包括路径解析、文件定位、编译执行和缓存。require 时先检查缓存,若已加载则直接返回缓存对象,避免重复执行。
  3. 【回答框架 3】路径解析遵循规则:核心模块优先,相对路径或绝对路径直接定位,非路径模块则从当前目录逐级向上查找 node_modules 目录。
  4. 【回答框架 4】文件定位时按扩展名尝试 .js、.json、.node,若为目录则读取 package.json 的 main 字段或 index 文件。
  5. 【回答框架 5】模块加载是同步的,执行完毕后 module.exports 作为模块导出对象被缓存,后续 require 返回同一对象。
  6. 【关键点 1】模块缓存机制确保同一模块只执行一次,后续 require 返回缓存对象。
  7. 【关键点 2】路径解析顺序:核心模块、相对/绝对路径、node_modules 逐级查找。
  8. 【关键点 3】模块代码被包裹在函数中,实现作用域隔离,避免全局污染。
  9. 【易错点 1】循环依赖时可能出现部分导出对象未初始化,需注意加载顺序。
  10. 【易错点 2】修改模块缓存对象会影响所有引用方,需谨慎操作。
  11. 【易错点 3】同步加载机制在大型项目中可能影响启动性能,但通常可接受。