🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
``` //模块化:可以防止变量全局污染,在模块中定义的变量,不是全局的 // 我们使用require引入外部模块,使用的是模块标识,通过标识找到指定的模块 // 模块分成两大类: // 核心模块:由node引擎提供的模块,标识就是模块的名字,引入不需要写路径,如npm安装的插件 // 文件模块:用户自己创建的模块,标识就是路径(绝对或相对路径),需要写路径 // 全局对象:global,它的作用和网页中的window类似,在全局中创建的变量,都会作为globa的属性保存,全局的方法,会作为global的方法保存 ``` ``` var a = 10; //局部变量 console.log(global.a) //undefined,在全局中未找到这个属性 ``` ![](https://img.kancloud.cn/9f/e5/9fe53aa79c7b446739f24516d9e46367_288x45.png) ``` b = 20; //全局变量 console.log(global.b) //20 ``` ![](https://img.kancloud.cn/c5/72/c572200c5ff79626a962503b181d1dac_279x38.png) ``` /* agruments.callee -- 这个属性保存的是当前执行的函数对象 */ console.log(arguments.callee + "") ; //+个 "" 目的是能打印出函数详情 ``` ![](https://img.kancloud.cn/49/a1/49a1e1fb849d65107adf3478a9aa59e7_932x347.png) 所以node在执行模块的代码时,会在顶部,添加如下代码:`function (exports, require, module, __filename, __dirname) {` 会在底部添加 `}`,所以模块化时,代码都是包装在函数里面执行,所以里面的变量都是局部变量,并且传了5个实参(exports, require, module, __filename, __dirname) ``` 实参: exports:改对象用来将变量或函数暴露到外部 require : 函数,用了引入外部模块 module : 代表当前模块,exports就是module的属性,既可以用exports导出,也可以用module.exports导出 __filename : 当前模块的完整路径 __dirname : 当前模块所在文件夹的路径 ``` ![](https://img.kancloud.cn/a8/b4/a8b44f13e3787db43cad446dee016728_552x215.png)