nodejs中,模块和文件是一一对应的关系,一个文件就可以看作是一个模块。文件可以是js、json文件、css等。
require(X)的内部加载逻辑:
- 先检查缓存,如果缓存中有则直接返回加载,如果没有进行第2步
- 如果X是内置模块,直接返回模块,不继续执行
- 如果X带路径,包含./ ../等,则根据X所在的父模块确定X的绝对路径
- 当作文件查找X文件,只要有一个文件,就返回该文件,不再继续执行
- 当作目录查找目录,只要有一个符合,就返回该目录下的所有文件
- 如果不带路径,则按照父模块的路径查找可能安装的目录,在这些目录下搜索可能的X文件或者X目录,找到则返回该文件或者目录。
- 没有找到,返回not found
nodejs中模块的使用采用module.exports和require(属于运行时加载,可同步)一起使用,es6采用import和export一起使用,import属于编译时加载。