path 模块
path模块可在脚本中 require 后直接使用
const path = require('path')
path 常用api
- basename() 获取路径中的基础名称
- dirname() 获取路径中目录名称
- extname() 获取路径中扩展名称
- isAbsolute() 获取路径是否为绝对路径
- join() 拼接多个路径片段
- resolve() 返回绝对路径
- parse() 解析路径
- format() 序列化路径
- normalize() 规范化路径
获取路径中的基础名称
返回的是接受路径中的最后一部分
第二个参数表示扩展名,如果没有设置则返回完整的文件名称带后缀
第二个参数作为后缀时,如果没有在当前路径中被匹配到,则会被忽略
处理目录路径的时候,如果结尾处有路径分隔符,则也会被处理掉
// 返回路径中的最后一位
console.log(__filename)
console.log(path.basename(__filename));
// D:\weblearn\notes\code\node\path.js
// path.js
// 可传入文件后缀名称,如有则输出不带后缀,否则输出整个文件名称
console.log(path.basename(__filename,'.js'));
console.log(path.basename(__filename,'.css'));
console.log(path.basename('/a/b/c'));
console.log(path.basename('/a/b/c/'));
// c c
获取路径目录名(路径)
返回路径中最后一个部分的上一层目录所在路径
console.log(path.dirname(__filename));
console.log(path.dirname('/a/b/c'));
console.log(path.dirname('/a/b/c/'));
获取路径的扩展名
返回path路径中相应文件的后缀名
如果path路径中存在多个’.’,匹配的是最后一个点到最后的内容
console.log(path.extname(__filename));
console.log(path.extname('/a/b/c'));
console.log(path.extname('/a/b/c/'));
console.log(path.extname('/a/b/c/index.js.css.html'));
// .js
//
//
// .html
解析路径
接受一个路径,返回一个对象,包含不同的信息
返回信息: root dir base ext name
const obj = path.parse('/a/b/c/index.html')
console.log(obj);
// {
// root: '/',
// dir: '/a/b/c',
// base: 'index.html',
// ext: '.html',
// name: 'index'
// }
const obj = path.parse('/a/b/c/')
const obj = path.parse('/a/b/c')
console.log(obj);
// { root: '/', dir: '/a/b', base: 'c', ext: '', name: 'c' }
const obj = path.parse('./a/b/c')
console.log(obj);
// { root: '', dir: './a/b', base: 'c', ext: '', name: 'c' }
序列化路径
const obj = path.parse('./a/b/c')
console.log(path.format(obj));
// ./a/b\c
判断当前路径是否为绝对路径
console.log(path.isAbsolute('foo'));
console.log(path.isAbsolute('/foo'));
console.log(path.isAbsolute('//foo'));
console.log(path.isAbsolute(''));
console.log(path.isAbsolute('.'));
console.log(path.isAbsolute('../foo'));
// false
// true
// true
// false
// false
// false
拼接路径
console.log(path.join('a/b','c','index.html'));
console.log(path.join('/a/b','c','index.html'));
console.log(path.join('a/b','c','../','index.html'));
console.log(path.join('a/b','c','./','index.html'));
console.log(path.join('a/b','c','','index.html'));
console.log(path.join(''));
// a\b\c\index.html
// \a\b\c\index.html
// a\b\index.html
// a\b\c\index.html
// a\b\c\index.html
// .
规范化路径
console.log(path.normalize(''));
console.log(path.normalize('a/b/c/d'));
console.log(path.normalize('a///b/c../d'));
console.log(path.normalize('a//\\b/c\\/d'));
console.log(path.normalize('a//\b/c\\/d'));
// .
// a\b\c\d
// a\b\c..\d
// a\b\c\d
// a\c\d
绝对路径
resolve([from],to)
console.log(path.resolve());
console.log(path.resolve('a','b')); // 不带‘/’都默认为to部分
console.log(path.resolve('a','/b')); // to部分带‘/’直接拼接
console.log(path.resolve('/a','/b')); // to部分带‘/’直接拼接
console.log(path.resolve('/a','b')); // 第一个参数带'/',默认为根目录
// D:\weblearn\notes\code\node
// D:\weblearn\notes\code\node\a\b
// D:\b
// D:\b
// D:\a\b