node系列:Node.js 中 ./,__dirname ,__filename,path.join()和path.resolve() 的区别

先写个例子目录为E:\web\test\abc.js,其中abc.js为我们写的测试代码,在Node中

./和process.cwd()效果相同,./有特殊情况

./就是执行node命令的路径,也就是工作路径,在哪运行的node index.js或者说在哪运行npm run build的路径 (特殊情况:在 require() 中使用 ./ 时,这时的路径就会是含有 require() 的脚本文件的相对路径。

__dirname

__dirname 总是指向被执行 js 文件的绝对路径,也就是说你在E:\web\test\abc.js中写__dirname那么路径就是E:\web\test

__filename

返回当前模块文件被解析过后的绝对路径,使用__filename变量获取当前模块文件的带有完整绝对路径的文件名,返回E:\web\test\abc.js(__dirname等同于path.dirname(__filename)

path.join()和path.resolve()区别

就是两个路径的拼接的API,废话不多说直接上代码,

示例E:\web\test\abc.js里面写:

path.join(__dirname,'/static/js') 输出 E:\web\test\static\js

path.join(__dirname,'./static/js') 输出 E:\web\test\static\js

path.join('/file','static') 输出 file\static

path.resolve()中的/会被解析为根目录

path.resolve('/test','/static/js') 输出 E:\static\js

path.resolve('/test','./static/js') 输出 E:\test\static\js

最后,还是上图说话吧,本机为Linux的测试,可以说很详细了

node系列:Node.js 中 ./,__dirname ,__filename,path.join()和path.resolve() 的区别_第1张图片

你可能感兴趣的:(nodeJS)