zl程序教程

您现在的位置是:首页 >  后端

当前栏目

Node.js join() 与 resolve() 的区别

JSNode 区别 Join resolve
2023-09-11 14:22:55 时间

path.join

使用平台特定的分隔符把给定的路径片段连接到一起。

  • 如果参数中的分隔符错误,会统一矫正。

path.resolve

把路径片段的序列解析为一个绝对路径(path.resolve 会把 ‘/’ 当成根目录)

  • 如果参数中的分隔符错误,会统一矫正。
  • 跟 path.join 一样连接路径,不同的是首个参数会被解析为绝对路径
  • 如果前面的参数以 ‘/’ 打头(分隔符按矫正后的算),会被当作根路径,否则使用当前路径作为起始
  • 如果后面的参数以 ‘/’ 打头(分隔符按矫正后的算),会忽略掉前面的参数,从新算起
  • 如果后一个参数以 ‘/’ 打头,等价于 ‘…/’ (即从上级目录开始拼接,这和之前一个参数是否以 ‘/’ 结尾无关)
  • 如果第一个参数不是以 ‘/’ 打头,那就是挂在当前目录下了

url.resolve

url.resolve 用来拼接 URL 路径

  • 后一个参数会替换掉前一个参数最后一个 ‘/’ 后面的内容
  • 如果后一个参数以 ‘/’ 打头,等价于 ‘…/’ (即从上级目录开始拼接,这和之前一个参数是否以 ‘/’ 结尾无关)

例子

const path = require('path')
console.log(path.join("/www/example/com", "workspace"))
console.log(path.join("/www/example/com/", "workspace"))
console.log(path.join("/www/example/com", "/workspace"))
console.log(path.join("/www/example/com/", "/workspace"))
console.log(path.join("/www/example/com\\", "\\workspace"))
console.log(path.join("/www/example/com/", "../workspace"))
console.log("====================")
console.log(path.resolve("/www/example/com", "workspace"))
console.log(path.resolve("/www/example/com/", "workspace"))
console.log(path.resolve("/www/example/com", "/workspace"))
console.log(path.resolve("/www/example/com/", "/workspace"))
console.log(path.resolve("/www/example/com\\", "\\workspace"))
console.log(path.resolve("/www/example/com", "../workspace"))
console.log(path.resolve("/www/example/com/", "../workspace"))
console.log("====================")
const url = require('url')
console.log(url.resolve("http://www.example.com/temp", "workspace"))
console.log(url.resolve("http://www.example.com/temp/", "workspace"))
console.log(url.resolve("http://www.example.com/temp", "/workspace"))
console.log(url.resolve("http://www.example.com/temp/", "/workspace"))
console.log(url.resolve("http://www.example.com/temp\\", "\\workspace"))
console.log(url.resolve("http://www.example.com/temp", "../workspace"))
console.log(url.resolve("http://www.example.com/temp/", "../workspace"))

windows 环境下的运行结果

\www\example\com\workspace
\www\example\com\workspace
\www\example\com\workspace
\www\example\com\workspace
\www\example\com\workspace
\www\example\workspace
====================
C:\www\example\com\workspace
C:\www\example\com\workspace
C:\workspace
C:\workspace
C:\workspace
C:\www\example\workspace
C:\www\example\workspace
====================
http://www.example.com/workspace
http://www.example.com/temp/workspace
http://www.example.com/workspace
http://www.example.com/workspace
http://www.example.com/workspace
http://www.example.com/workspace
http://www.example.com/workspace

注意:该命令是在 C:\Users\用户名 路径下运行的,如果第一个参数不是以 ‘/’ 打头,那就是挂在当前目录下了。

菜鸟教程在线编译工具(linux环境)下的运行结果

/www/example/com/workspace
/www/example/com/workspace
/www/example/com/workspace
/www/example/com/workspace
/www/example/com\/\workspace
/www/example/workspace
====================
/www/example/com/workspace
/www/example/com/workspace
/workspace
/workspace
/www/example/com\/\workspace
/www/example/workspace
/www/example/workspace
====================
http://www.example.com/workspace
http://www.example.com/temp/workspace
http://www.example.com/workspace
http://www.example.com/workspace
http://www.example.com/workspace
http://www.example.com/workspace
http://www.example.com/workspace


注意:该命令是在远程计算机的 /tmp/850964689 路径下运行的

推荐一个在线编译工具

https://c.runoob.com/compile

在这里插入图片描述