path.resolve(__dirname,'')理解

今天在搞Vue的时候,前端大佬给我写了一个本地测试的服务器,里面包含下面这句话

app.use('/',express.static(path.resolve(__dirname,'../dist')));

其中 path.resolve(__dirname,'../dist')不大了解,于是看了看官网,看了半天感觉有点蒙逼,于是就百度了其他人的解释,

顺便加上自己的理解,或者直接看下面的总结

官网给的例子有:

path.resolve('/foo/bar', './baz');
// 返回: '/foo/bar/baz'

path.resolve('/foo/bar', '/tmp/file/');
// 返回: '/tmp/file'

path.resolve('wwwroot', 'static_files/png/', '../gif/image.gif');
// 如果当前工作目录为 /home/myself/node,
// 则返回 '/home/myself/node/wwwroot/static_files/gif/image.gif'


此时的目录结构:

F:/foo/bar/baz
F:/bar/baz
F:/tmp/file
F:/home/myself/node/wwwroot/static_files/gif/image.gif
F:/home/myself/node/wwwroot/static_files/png


----------------------------------------------------------------------------------------------------

百度了其他人写的讲解,增加下自己的理解,自己可以在CMD窗口试一下:

1:path.resolve('/foo/bar', '/tmp/file/');这个比较好理解,相当于:

cd /foo/bar //此时路径为 /foo/bar
cd /tmp/file/ //此时路径变为了 /tmp/file   

--------看上面的目录结构可以发现foo/bar和/tmp/file/是平级的,所以绝对路径变了

2:path.resolve('/foo/bar','./baz');相当于:

cd /foo/bar //此时当前路径为 /foo/bar
cd ./baz //此时路径为 /foo/bar/baz   

 --------看上面的目录结构可以发现baz是在F:/foo/bar/下面的,./baz可以理解为在F:/foo/bar/目录下面执行了:CD baz

3:path.resolve('wwwroot', 'static_files/png/', '../gif/image.gif');// 如果当前工作目录为 /home/myself/node,相当于:
cd wwwroot //此时路径为/home/myself/node/wwwroot
cd static_files/png/ //此时路径为/home/myself/node/wwwroot/static_files/png/
cd ../gif/image.gif //这里用cd描述其实是不对的。。。。此时路径为/home/myself/node/wwwroot/static_files/gif/image.gif

--------看上面的目录结构可以这2个目录 png 和 gif 是不同的

F:/home/myself/node/wwwroot/static_files/gif/image.gif
F:/home/myself/node/wwwroot/static_files/png

首先第一步 cd wwwroot //此时路径为/home/myself/node/wwwroot  这个很好理解

第二步    cd static_files/png/   也好理解 就是在第一步的目录下面又执行了下面的子目录

第三部    cd  ../gif/image.gif  是会报错的 可能是为了便于理解才这样写的,我的理解是这里可以和第二种情况一样,在  F:/home/myself/node/wwwroot/static_files/  目录下执行了CD gif/image.gif    

最后总结一下:../dist      ./dist      /dist    dist

../dist:相当于在__dirname父目录下执行 CD  dist

./dist:相当于在__dirname目录下执行 CD  dist

/dist:和_dirname无关,在根目录执行 cd dist

dist:和_dirname无关,直接 CD dist的目录

看控制台:目录结构,此时__dirname是localServer

------------------分割线------------------------------------------------------------------------------------
由于刚接触vue前后端分离,如有错误欢迎提出~

猜你喜欢

转载自blog.csdn.net/CarryBest/article/details/88813745