本文共 649 字,大约阅读时间需要 2 分钟。
对于一个模块而言,有两个关键的地方:一个是有自己的作用域,另一个是有对外暴露的接口。那么,模块是如何实现这两个特性的呢?
其实,这可以通过一个立即执行函数来实现。Node在编译时会为我们的代码包裹一层立即执行函数,并传入一些必须的参数。
在这个立即执行函数中,我们会看到几个非常重要的变量:
module.exports的一个引用。这个立即执行函数的结构大致如下:
(function (exports, require, module, __filename, __dirname) { // 我们写的代码})(); 为了更好地理解这些变量,我们可以在代码中打印它们:
// 打印console.log(__filename); // 输出当前模块的绝对路径console.log(__dirname); // 输出当前模块所在目录的绝对路径console.log(exports); // 输出模块数据console.log(module); // 输出模块的基本信息console.log(require); // 输出模块导入函数
通过这种方式,我们可以清晰地看到模块在编译时所接收的参数,以及如何利用这些参数来实现模块的功能。
转载地址:http://rajfk.baihongyu.com/