Life and freedom Ge Lin ——— Draw by Razzh

path.resolve 使用方法

Jul 7 · 3 min

之前在项目中常用到 path.resolve 这个方法,知道它是处理路径的方法,但总是被它的输出整不会了[尬笑!],来看看这几个例子!

const dir = __dirname
const p1 = path.resolve('/foo/bar', './baz')
const p2 = path.resolve('/foo/bar', '/baz')
const p3 = path.resolve(dir, '/foo/bar')
const p4 = path.resolve(dir, './foo/bar')

结果:
p1: /foo/bar/baz
p2: /baz
p3: /foo/bar p4: dir + /foo/bar

p1p2 以及 p3p4 的第二个参数就差了一个点(dot),但输出结果就完全不同,还有 p3 ! 我在第一个参数填了 __dirname,为啥不输出 dir + /foo/bar ,而 p4 就能输出刚才谈到的结果呢??

#解析path.resolve

我在 Node.js 官网中找到 path.resolve 的定义:

The path.resolve() method resolves a sequence of paths or path segments into an absolute path.

意思说是此方法会“解析”多路径或是路径碎片把它们加到绝对路径中。也就是说 resolve 方法最终返回的结果是一个绝对路径的字符串!吐槽一句,官方的说法也未免太抽象了。

于是,我在 stackoverflow 中查到了关于对 path.resolve 的描述:

I would say the name of resolve is not the most clear, path.cd([starting dir], [final dir]) would be much more intuitive. – João Pimentel Ferreira

我觉得,path.resolve 这个起名不够清楚,path.cd([starting dir], [final dir]) 会更直观。

什么意思呢? cd [Change directory] ,译为切换目录,好了那么按照👆的思路,我们以 p1p4 一下上述代码 cd 的过程。

#p1

  1. cd /foo/bar 目录,也就是 /foo/bar
  2. /foo/barcd baz,最终就到了 /foo/bar/baz

p1 翻译成 shell 脚本 -> cd /foo/bar && cd ./baz

#p4

  1. cd dir, 也就是当前文件在根目录下的绝对路径
  2. cd /foo/bar 也就相当于 dir + foo/bar

p3 翻译成 shell 脚本 -> cd dir && cd /foo/bar
p4 翻译成 shell 脚本 -> cd dir && cd ./foo/bar

这样就清楚了

浙ICP备2024129591号-1
春秋(Live) - 张敬轩
--:-- / --:--
  1. 1春秋(Live)张敬轩
  2. 2不吐不快(live)张敬轩
  3. 3男孩最痛(live)张敬轩
  4. 4粤语残片(live)陈奕迅
  5. 5几分之几(live)卢广仲
  6. 6地球很危险古巨基
  7. 7樱花树下(live)张敬轩

春秋 (Live) - 张敬轩 (Hins Cheung)

词:林夕

曲:Edmond Tsang

那夜谁将酒喝掉

因此我讲得多了

然后你摇着我手拒绝我

动人像友情深了

我没权终止见面

只因你友善依然

仍用接近甜蜜那种字眼通电

没人应该 怨地怨天

得到这结局

难道怪罪神没有更伪善的祝福

我没有为你伤春悲秋不配有憾事

你没有共我踏过万里

不够剧情延续故事

头发未染霜 着凉亦错在我幼稚

应快活像个天使

有没有运气再扮弱者 玩失意

有没有道理为你落发

必须得到世人同意

心灰得极可耻 心伤得无新意

那一线眼泪 欠大志

爱若能堪称伟大 再难挨照样开怀

如令你发现为你而活到失败

令人不安 我品性坏

我没有为你伤春悲秋不配有憾事

你没有共我踏过万里

不够剧情延续故事

头发未染霜 着凉亦错在我幼稚

应快活像个天使

有没有运气再扮弱者玩失意

有没有道理为你落发

必须得到世人同意

心灰得极可耻 心伤得无新意

那一线眼泪 欠大志 太没意思

若自觉这叫痛苦未免过份容易

我没有被你改写一生怎配有心事

我没有被你害过恨过

写成情史 变废纸

春秋只转载要事

如果爱你欠意义

这眼泪 无从安置

我没有运气放大自私的失意

更没有道理在这日

你得到真爱制造恨意

想心酸 还可以 想心底 留根刺

至少要见面上万次