node中的模块化理解

135 阅读1分钟

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:***}