path 为Nodejs常用的内置模块,主要为了更加方便的处理文件与目录路径.
let path = require('path')
path 模块根据 node 应用程序所在的系统环境不同而呈现不同的默认操作,在windows操作系统中,path 会根据windows的路径规范来操作:
1、path.extname(path)
获取path对应得扩展名:
console.log(path.extname('text.config.html'))
// 扩展名 .html
2、path.join([ ...paths ])
paths为string 类型,会有多个路径,返回结果为:系统对应的路径分隔符将这一系列的路径链接到一起:
let r = path.join('/users', 'user', 'u', '/s')
console.log(r) // windows系统输出结果: \users\user\u\s
3、path.resolve([ ...paths ])
参数为多个路径,返回的是 把解析一系列路径成绝对路径:
注意:
(1)从右向左一次拼接,直 到遇到第一个绝对 路径(/xxx)形式的path 才停止,如: path.resolve('/foo', 'users', '/u', 'user'),从右向左依次解析,第一次遇到绝对路径为 '/u',所以不再继续向左拼接,这里与path.join要区别开,最后结果为: /u/user
· 如果匹配到最后,这一系列没找到绝对路径,则会以当前盘符为基准,将当前的路径拼接起来:
// 当前盘符为 i盘, windows系统
let r = path.resolve('/users', 'user')
console.log(r) 输出结果: i:\users\user
(2)如果路径中有 ../xxx,会返回到xxx的上一层目录,然后接着匹配。
(3)空字符串会被忽略。
let r = path.resolve('/users', '/', '', 'u', 'user')
console.log(r) 输出结果: I:\u\user
(4)path.resolve()可以把路径转化为操作系统识别的分隔符,所以开发中对路径的操作,可以使用该模块进行拼接。
4、path.sep
输出不同系统下对应的路径分隔符,下边是在windows系统下输出的结果:
console.log(path.sep) 输出结果为 \
5、path.delimiter
输出不同系统下对应的路径分隔符:
·在windows上是 ;
· 在linux 上是 :
下边是window系统下的环境变量中路径分隔截图,都是以分号分隔:
我们可以使用process.env.PATH 输出系统环境变量,使用split方法,以path.delimiter 进行分隔,这样就不需要考虑项目所在的系统了:
// linux系统中
const path = require('path')
console.log(proccess.env.PATH) // 输出 '/user/bin:/bin:/user/sbin'
console.log(process.env.PATH.split(path.delimiter))
// 结果为 ['/user/bin', '/bin', '/user/sbin']
6、path.dirname()
返回当前path路径的目录名。
如:
const path = require('path')
const p = 'G:\\vue-test\\20210118\\test1.js'
console.log(path.dirname(p))
7、basename(path, [ext])
path.basename( ) 分两种情况:
(1)当只有一个路径参数时:
返回当前path路径最后的 文件名及扩展名。
let path = require("path")
console.log(path.basename('./a/b/user.js')) // 输出 user.js
(2)当有2个参数, 且参数二是文件的扩展名:
只会返回当前path路径的文件名。
let path = require("path")
console.log(path.basename('./a/b/user.js', '.js')) // 输出 user