node学习 path的基本api 整理

206 阅读2分钟
const path = require('path')

// console.log(__filename)

1 获取路径中的基础名称

01 返回的就是接收路径当中的最后一部分 02 第二个参数表示扩展名,如果说没有设置则返回完整的文件名称带后缀 03 第二个参数做为后缀时,如果没有在当前路径中被匹配到,那么就会忽略 04 处理目录路径的时候如果说,结尾处有路径分割符,则也会被忽略掉

console.log(path.basename(__filename)) // 01-path.js
console.log(path.basename(__filename, '.js')) // 01-path
console.log(path.basename(__filename, '.css')) // 01-path.js
console.log(path.basename('/a/b/c')) // c
console.log(path.basename('/a/b/c/')) // c

2 获取路径目录名 (路径)

01 返回路径中最后一个部分的上一层目录所在路径

console.log(path.dirname(__filename)) // /Users/jiaojin168/Desktop/node/Code/02Path
console.log(path.dirname('/a/b/c')) // /a/b
console.log(path.dirname('/a/b/c/')) // /a/b

3 获取路径的扩展名

01 返回 path路径中相应文件的后缀名 02 如果 path 路径当中存在多个点,它匹配的是最后一个点,到结尾的内容

console.log(path.extname(__filename)) // .js
console.log(path.extname('/a/b')) // 
console.log(path.extname('/a/b/index.html.js.css')) // .csss
console.log(path.extname('/a/b/index.html.js.')) // .

4 解析路径

01 接收一个路径,返回一个对象,包含不同的信息 02 root dir base ext name

 const obj = path.parse('/a/b/c/index.html')
//  {
//   root: '/',
//   dir: '/a/b/c',
//   base: 'index.html',
//   ext: '.html',
//   name: 'index'
// }
 const obj = path.parse('/a/b/c/')
 //{ root: '/', dir: '/a/b', base: 'c', ext: '', name: 'c' }
 const obj = path.parse('./a/b/c/')
 //{ root: '', dir: './a/b', base: 'c', ext: '', name: 'c' } 

5 序列化路径

01path.parse 解析过的结果 组合成一个正常的路径
const obj = path.parse('./a/b/c/')
console.log(path.format(obj)) // ./a/b/c

6 判断当前路径是否为绝对

console.log(path.isAbsolute('foo')) // false
console.log(path.isAbsolute('/foo')) // true
console.log(path.isAbsolute('///foo')) // true
console.log(path.isAbsolute('')) // false
console.log(path.isAbsolute('.')) // false
console.log(path.isAbsolute('../bar')) // false

7 拼接路径

01 拼接传入的路径
02 能给识别 ../ ./ 
03 传入 ‘’ 返回的是.
console.log(path.join('a/b', 'c', 'index.html')) // a/b/c/index.html
console.log(path.join('/a/b', 'c', 'index.html')) // /a/b/c/index.html
console.log(path.join('/a/b', 'c', '../', 'index.html')) // /a/b/index.html
console.log(path.join('/a/b', 'c', './', 'index.html')) // /a/b/c/index.html
console.log(path.join('/a/b', 'c', '', 'index.html')) // /a/b/c/index.html
console.log(path.join('')) // .

8 规范化路径

01 整理传入的路径
02 多个///会被当初一个 /
03 多个\ 也会当成一个 \
04 \会被当成转义符 \b 是有意义的 会被忽略
console.log(path.normalize('')) // .
console.log(path.normalize('a/b/c/d')) // a/b/c/d
console.log(path.normalize('a///b/c../d')) // a/b/c../d
console.log(path.normalize('a//\\/b/c\\/d')) // a/\/b/c\/d
console.log(path.normalize('a//\b/c\\/d')) // a/c\/d

// 9 绝对路径

 console.log(path.resolve()) // /Users/jiaojin168/Desktop/node/Code/02Path

resolve([from], to) 01 方法会把一个路径或路径片段的序列解析为一个绝对路径。 给定的路径的序列是从右往左被处理的,后面每个 path 被依次解析,直到构造完成一个绝对路径。

console.log(path.resolve('/a', '../b')) // /b 
console.log(path.resolve('index.html')) // /Users/jiaojin168/Desktop/node/Code/02Path/index.html