[Node.js](十) 模块的加载机制

82 阅读1分钟

1 . 优先从缓存中加载

模块在第一次加载后就会被缓存。这也意味着多次调用 require() 不会导致模块里的代码被执行多次(if有console.log())。

注意:不论是内置模块、用户自定义模块、还是第三方模块,都会优先从缓存中加载!!!

2 . 内置模块加载机制

内置模块是由 Node.js 官方提供的模块,内置模块的加载优先级最高.

  • 即如果在 node_modules 目录下有名字相同名字的其它类型的包,还是会加载这个内置模块的包

3 . 自定义模块加载机制

在加载自定义模块时,必须指定以 ./ 或者 ../ 开头的路径标识符,则 node 会把它当作内置模块或者第三方模块来进行加载。

1220.png

4 . 第三方模块加载机制

如果 require() 的模块标识符不是一个内置模块,也没有以 './' 或 '../' 开头,则 Node.js 会从当前目录开始,尝试从 /node_modules 文件夹中加载第三方模块。

  • 如果没有找到对应的第三方模块,则会移动到上一层父目录中,进行加载,直到文件系统的根目录。例:

1221.png

4 . 把目录(文件夹)作为模块导入的加载机制

1222.png