node的每个模块在被引入时,其实是把模块当作函数执行了一遍。
当node在执行模块中的代码时,他会首先在代码的最顶部添加如下代码:
function(exports, require, module, __filename, __dirname){
在代码的最底部添加如下代码:
}
实际上模块中的代码都是包含在一个函数中执行的,并且传递了5个实参
exports
将变量或函数暴露到模块外部
require
函数,用于引入外部模块
module
代表的当前模块本身 -exports是module的属性 -既可以用exports导出,也可以用module.exports导出
__filename
当前模块完整路径
__dirname
当前模块所在文件夹的完整路径
module.exports和exports的区别
exports
-只能通过‘.'的方式向外暴露内部变量
-exports.a
module.exports
-既可以只能通过‘.'的方式向外暴露内部变量,也可以直接赋值
-module.exports.a = ***
-module.exports = {a:***}