谈谈我对path.resolve()的理解

前言

前一段时间在阅读源码的时候,遇到了path.resolve(),经过请教,终于知道了这个方法的作用。这边文章用来记录自己的使用心得。

正文

path.resolve()

作用:path.resolve() 该方法将一些的 路径/路径段 解析为绝对路径。
语法:path.resolve( [from…],to )。
说明:将参数to位置的字符解析到一个绝对路径里,[from … ]为选填项,路径源,path.resolve总是返回一个以相对于当前的工作目录(working directory)的绝对路径。
用法:

var path = require("path")     //引入node的path模块
path.resolve('/foo/bar', './baz')   // returns '/foo/bar/baz'
path.resolve('/foo/bar', 'baz')   // returns '/foo/bar/baz'
path.resolve('/foo/bar', '/baz')   // returns '/baz'
path.resolve('/foo/bar', '../baz')   // returns '/foo/baz'
path.resolve('home','/foo/bar', '../baz')   // returns '/foo/baz'
path.resolve('home','./foo/bar', '../baz')   // returns '/home/foo/baz'
path.resolve('home','foo/bar', '../baz')   // returns '/home/foo/baz'
path.resolve('home', 'foo', 'build','aaaa','aadada','../../..', 'asset') //return '/home/foo/asset'

总结:
path.resolve(“./path”)的特性有以下几点:

  1. 从右往左读取"path"路径,并开始拼接,本身就自带绝对路径参数 “to” ;
  2. 当"path"路径为空时,则会直接获取当前文件所在的绝对路径;
  3. 当遇到字符以 ./ 开头或者没有字符,则正常拼接,所以可省略不加字符;
  4. 当遇到字符以 / 开头,则不会拼接到前面的路径并以自身所在盘为根路径加以拼接;
  5. 当遇到字符以 …/ 开头,则会将下一个要拼接"path"路径给覆盖,然后继续往左拼接;
  6. 搭配__dirname时,需将放置第一位,且与 ’ / ’ 有互相覆盖的冲突;

猜你喜欢

转载自blog.csdn.net/qq_44880095/article/details/128406901