YSS

Write Less & Do More

node中path.join和path.resolve的区别

前言

随着使用node.js越来越多,在对path的两个方法:joinresolve 越来越迷惑了。

所以,有必要彻底搞懂他们两个的差别。

定义

说到区别,我们先看定义:

path.join

The path.join() method joins all given path segments together using the platform specific separator as a delimiter, then normalizes the resulting path.

翻译过来就是:

 这个path.join()方法是使用平台具体分隔符把所有给定的路径片段值连接起来,然后得到一个标准路径。

关键字:路径片段、分隔符、连接

path.resolve

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

翻译过来就是:

这个path.resolve方式解析一串路径或路径片段到一个绝对路径。

关键字:路径、路径片段、绝对路径

差异

join相当于把路径字符串按照规则连接起来。并不关心路径本身是否是绝对路径。

resolve本意是解析,就是尝试搜索,并且返回的是绝对地址。path.resolve(a, b, c)等价于cd $a && cd $b && cd $c

例子:

path.join('/a', '/b'); // /a/b
path.resolve('/a', '/b'); // /b <=> cd /a && cd /b

参考

https://nodejs.org/dist/latest-v8.x/docs/api/path.html