参数问题
require('./index');
传入一个路径,但是没给后缀名,默认加载该路径的 index.js , index.json , index.node,如果都没有,就找index文件夹,文件夹下的 package.json,文件,找到 => 键 main 中定义的入口文件位置比如入口文件是 app.js ,如果没有就依次找 index.js , index.json , ndex.node ,否则就报错。
注意 : 以路径名加载一个模块最好写上后缀
require('http')
传入一个模块名称 加载顺序 : 读取缓存 => 核心模块 => 第三方模块
注意 : 加载第三方模块会依次向上查找 如
[ 'D:\\学习资料\\js学习\\nodeStudy\\01-入门\\node_modules',
'D:\\学习资料\\js学习\\nodeStudy\\node_modules',
'D:\\学习资料\\js学习\\node_modules',
'D:\\学习资料\\node_modules',
'D:\\node_modules' ]
执行
const index = require('./index.js');
执行
比如在当前模块加载 index.js,require 是在内置 module 模块中,也是一个全局方法。首先它会查找缓存中有没有这个模块,有就直接读取返回,没有就创建一个模块的实例 并存到缓存中,然后读取对应的文件并执行里面的代码再返回。读取文件用到 fs.readFileSync() ,所以require()也是一个同步的操作。
返回值
node.js 遵循 Commonjs 标准,每个模块引用时返回一个 module.exports 对象,在父模块中,module.exports 和 exports 指向同一个对象,子模块变量 index 接收到 module.exports 。
注意:虽然指向同一个对象,但是总是返回 module.exports 指向的那个
网友评论