1 . 优先从缓存中加载
模块在第一次加载后就会被缓存。这也意味着多次调用 require() 不会导致模块里的代码被执行多次(if有console.log())。
注意:不论是内置模块、用户自定义模块、还是第三方模块,都会优先从缓存中加载!!!
2 . 内置模块加载机制
内置模块是由 Node.js 官方提供的模块,
内置模块的加载优先级最高.
- 即如果在 node_modules 目录下有名字相同名字的其它类型的包,还是会加载这个内置模块的包
3 . 自定义模块加载机制
在加载自定义模块时,必须指定以 ./ 或者 ../ 开头的
路径标识符,则 node 会把它当作内置模块或者第三方模块来进行加载。
4 . 第三方模块加载机制
如果 require() 的模块标识符不是一个内置模块,也没有以 './' 或 '../' 开头,则 Node.js 会从当前目录开始,尝试从 /node_modules 文件夹中加载第三方模块。
- 如果没有找到对应的第三方模块,则会移动到上一层父目录中,进行加载,直到文件系统的根目录。例: