path属于node中的工具模块,path是node中的路径模块,模块提供了一些用于处理文件路径的小工具
关于引入
系统模块,直接引入,不需要下载
let path = require('path');
path方法
path.normalize()整理路径中的 ‘ … ’ 和 ‘ . ’ ,使路径变得更加规范
let urls = '../../././path/../.././a/c/d.html';//随便写一个路径,可以说这个路径的很多地方是无效的没必要的
console.log(path.normalize(urls));//使用path.normalize()整理路径urls
../../../a/c/d.html //打印结果
路径连接
path.join()用于路径连接,在不同的操作系统中分隔符是不同的,所以使用+‘分隔符’+这种方式连接路径在不同系统中可能是存在会报错的,而使用path.join()的方式,使其更加规范
console.log(path.join('User','Desktop','node','index.js'))
User/Desktop/node/index.js//打印结果使用了 ' / '连接字符,我使用的是mac,与window系统一样,在Unix系统中会使用 '\'连接
介绍一下(__dirname),可以帮助将写的绝对路径补全成相对路径,在前端开发中,要求写相对路径,因为文件移动了,绝对路径就会崩掉,而在node中,写相对路径会存在找不到文件的情况,虽然肯定是我的问题。虽然写绝对路径能解决,但是同样存在和前端相同的问题,那么(__dirname)加上路径拼接path.join()可以解决这个问题
console.log(path.join(__dirname,'index.js'));
/Users/xmly/Desktop/node/index.js //打印结果,将文件补全成绝对路径,并且文件发生移动时,路径也会发生改变
路径信息
console.log(path.dirname(path.join(__dirname,'index.js')));
//返回当前文件的文件夹部分
//打印结果/Users/xmly/Desktop/node
console.log(path.basename(path.join(__dirname,'index.js')));
//返回当前路径的文件部分
//打印结果index.js
console.log(path.extname(path.join(__dirname,'index.js')))
//返回当前路径的文件后缀
//打印结果 .js
console.log(path.parse(path.join(__dirname,'index.js')));
//返回一个对象集合
{
root: '/', //连接符
dir: '/Users/xmly/Desktop/node', //路径文件夹部分
base: 'index.js', //路径文件部分
ext: '.js', //路径文件的后缀名
name: 'index' //路径文件文件名
}
关于路径信息的四个方法中,path.parse()是比较常用的,因为他可以引用出其他三个
console.log(path.parse(path.join(__dirname,'index.js')).dir);
//返回路径文件夹,与path.dirname()效果相同
console.log(path.parse(path.join(__dirname,'index.js')).base);
//返回路径中文件,与path.basename()效果相同
console.log(path.parse(path.join(__dirname,'index.js')).ext);
//返回路径中文件后缀名,与path.extname()效果相同
然而在path路径模块中,上述的方法比较重要,下述方法理解即可
判断路径是不是绝对路径,path.isAbsolute()方法,是则返回true
console.log(path.isAbsolute(path.join(__dirname,'index.js'));
将对象转为路径模式,与path.parse()效果相反
let urls = {
root: '/',
dir: '/Users/xmly/Desktop/node',
base: 'index.js',
ext: '.js',
name: 'index'
}
console.log(path.format(urls))
//打印结果 /Users/xmly/Desktop/node/index.js
将文件补全成绝对路径
console.log(path.resolve('index.js'))
//打印结果/Users/xmly/index.js
//并不是相对于现在文件夹的绝对路径,所以并没有(dirname)好用
将绝对路径改为相对路径
path.relative();