Nodejs-window posix Path的API 总结

405 阅读3分钟

关于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 返回正斜杠 ( / )