关于modejs的path常用API学习
路径
在文件路径中,/,\和\\是用于分隔目录和文件名的特殊字符。它们之间的区别如下:
1. / (正斜杠): 这是在Unix和Linux系统中使用的路径分隔符。它用来分隔目录和文件名,并指示文件的层级结构。例如:/home/user/file.txt。
2. \ (反斜杠): 这是在Windows系统中使用的路径分隔符。与正斜杠相比,它用于分隔目录和文件名,也指示文件的层级结构。例如:C:\Users\User\file.txt。
3. \\ (双反斜杠): 在一些编程语言和特定应用程序中,双反斜杠被用作路径分隔符。这是因为在字符串中,反斜杠通常被用于转义字符。例如,在Python中,\\可以用作路径分隔符,以避免反斜杠被认为是转义字符。例如:C:\\Users\\User\\file.txt。
node API引入
高版本
const path = require('node:path');
低版本
const path = require('path');
path
path 在不同的操作系统有不同的区别 window 和 posix
posix
posix表设一套可以移植的操作系统,就是定义了一套标准,遵循这套标准的有(unix,likeunix,linux,macOs,windows 的 wsl);
windows
window没有完全遵循posix 标准 window在设计上采用了不同于poxis的路径表示方法
在windows种,路径使用反斜杠( \ )作为路径分隔符,与posix使用的正斜杠(/)是不用的,这是windows系统的历史原因所致
windows 和 posix的区别
每个api都可以加 win32 和 posix
path.win32.dirname() path.posix.basename()
常用的path API
1.basename 返回给定路径的最后一部分
参数
path 字符串
suffix 字符串
返回: 字符串
path.basename('/foo/bar/baz/asdf/quux.html');
// return: 'quux.html'
path.basename('/foo/bar/baz/asdf/quux.html', '.html');
// return: 'quux'
windows 兼容正反斜杠都可以 (/) (\)
window 都支持
正斜杠
console.log(path.basename("/boo/bar/poro/index.html"))
//index.html
反斜杠
console.log(path.win32.basename("\\boo\\bar\\poro\\index.html"))
//index.html
posix无法处理反斜杠 (\)
正斜杠
console.log(path.posix.basename("/boo/bar/poro/index.html"))
//index.html
反斜杠
console.log(path.posix.basename("\\boo\\bar\\poro\\index.html"))
// \boo\bar\poro\index.html
在其他如macos系统解析windows系统路径
这样macos也可以解析windows的路径
console.log(path.win32.basename("\\boo\\bar\\poro\\index.html"))
2.dirname 返回路径的目录名(返回除了最后一个的前面所有)
console.log(path.win32.dirname(" F:\\project\\node\\boo\\bar\\poro\\index.html"))
// F:\project\node\boo\bar\poro
3.extname 返回扩展名 (返回后缀)
console.log(path.win32.extname(" index.html"))
// .html //如果没有点(.)返回空的值
console.log(path.win32.extname(" index"))
// //如果有多个点(.) 返回最后一个点(.)
console.log(path.win32.extname(" index.html.html.xxx.num.npm.js"))
// .js
/**
*常用于判断是否图片 .png .jpg
*是否.json 等
*/
4.path.join() 拼接路径
console.log(path.join("/a","/b","/c"))
// \a\b\c //拼接字符
console.log(path.join("/a","/b","/c","../)
// \a\b\
5.path.resolve() 解析路径 返回绝对路径
// 如果都是绝对路径返回最后一个
console.log(path.resolve("/a","/b","/c"))
// F:\c
// 如果只有一个相对路径 返回当前工作目录的绝对路径 (当前位置 F:\project\node)
console.log(path.resolve("./index.js"))
// F:\project\node\index.js
//如果一个绝对路径和一个相对路径拼接 返回的还是绝对路径 (当前位置 F:\project\node\poro)
console.log(path.resolve(__dirname,'./index.js'))
// F:\project\node\poro\index.js
/**
*常用于 需要绝对路径的 如webpack,vite 的出口
*/
6.path.parse() 解析路径 返回一个对象 和format 互补
console.log(path.parse('\project\node\boo\bar\poro\index.js'))
// {
root:"\", //根目录
dir:"\project\node\boo\bar\poro",//文件所在目录
base:"index.js",//文件名+后缀
ext:".js",//后缀
name:"index"//文件名
}
7.path.format() 传一个对象 返回一个路径 和parse 互补
console.log(path.format({
root:"\",
dir:"\project\node\boo\bar\poro",
base:"index.js",
ext:".js",
name:"index"
}))
// \project\node\boo\bar\poro\index.js
8.path.sep 返回不同操作系统的路径
window 返回反斜杠 ( \ )
posix 返回正斜杠 ( / )