当前位置: 首页>后端>正文

node模块的本质

 对于一个模块而言,有两个关键的地方,一是有自己的作用域,二是有对外暴露的接口

不知道大家有没有想过这样一个问题,模块是怎么实现上面两个特性的呢?其实通过一个 立即执行函数 就可以了

实际上 Node 在编译的时候,会在我们写的代码外包上一层立即执行函数,并传入一些必须的参数

  • exports:用于导出模块数据,module.exports 的一个引用
  • require:用于导入其它模块
  • module:包含当前模块的基本信息
  • __filename:当前模块的绝对路径
  • __dirname:当前模块所在目录的绝对路径
(function (exports, require, module, __filename, __dirname) {
    /* 我们写的代码 */
})()

我们上面使用的 requireexports 都是在编译时传入的,我们可以把传入的参数打印出来看一下

// 打印
console.log(__filename)
console.log(__dirname)
console.log(exports)
console.log(module)
console.log(require)

https://www.xamrdz.com/backend/3es1963563.html

相关文章: