什么是Node.js 全局对象
对于浏览器引擎来说,JavaScript 脚本中的 window 是全局对象,而Node.js程序中的全局对象是 global,所有全局变量(除global本身外)都是global 对象的属性。全局变量和全局对象是所有模块都可以调用的。Node.is 的全局变量包括filename和 dirname 等,全局对象包括console 和process 等。
2.4.1全局变量 __filename和 __dirname
__flename
(两个下画线开头)指向当前正在执行的脚本文件名。__dimname
指向当前运行的脚本所在的目录。与path.dirname( __filename)
返回的路径相同
console.log("======输出开始==========")
console.log(__filename);
console.log(__dirname);
console.log("======输出结束==========")
上面演示 console.log(__filename);
输出了脚本文件的绝对路径。console.log(__dirname);
则输出了脚本文件所在文件夹的绝对路径。
假定有两个模块a和b,其中b是a的依赖文件,a和b的目录结构如下
/users/zxp/app/a.js
/users/zxp/app/node_modules/b/b.js
b.is中的 __filename
会指向/users/zxp/app/node modules/b/b.js,
而a.js 中的 __filename
会指向/users/zxp/app/a.js。
也就是说模块依赖不会改变路径。