require根据参数不同格式,加载不同路径去寻找模块文件.
如果参数字符串以"/"开头,则表示加载的是一个位于绝对路径的模块文件.
如果参数字符串以"./"开头,则表示加载的是一个位于相对路径(相对于当前执行脚本的位置相比)的模块文件
如果参数字符串不以"./"或"/"开头,则表示加载的是一个默认提供的核心模块(位于Node的系统安装目录中),或者一个位于各级node_modules目录的已安装模块.
上述引述自JavaScript标准参考教程,前两种情况比较好理解,在此对第三种情况进行进一步探讨.
如上图所示,无论是采用方案一还是方案二,均不会加载根目录下的mymodule.js文件,可见第三种情况下,只会加载node_modules目录下的文件.
如上图所示,在node_modules目录下新增mymodule.js文件,无论是采用方案三还是方案四,都可以加载到mymodule.js文件.此时进一步思考,假如在node_modules文件夹下面,有一个同名的文件夹模块呢?