前言
前一段时间在阅读源码的时候,遇到了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”)的特性有以下几点:
- 从右往左读取"path"路径,并开始拼接,本身就自带绝对路径参数 “to” ;
- 当"path"路径为空时,则会直接获取当前文件所在的绝对路径;
- 当遇到字符以 ./ 开头或者没有字符,则正常拼接,所以可省略不加字符;
- 当遇到字符以 / 开头,则不会拼接到前面的路径并以自身所在盘为根路径加以拼接;
- 当遇到字符以 …/ 开头,则会将下一个要拼接"path"路径给覆盖,然后继续往左拼接;
- 搭配__dirname时,需将放置第一位,且与 ’ / ’ 有互相覆盖的冲突;