摘要: 在本教程中,您将了解 Node.js 中的 path
模块。
Node.js 提供了一个 path
模块,允许您轻松地与文件路径进行交互。
path
模块具有许多有用的属性和方法来访问和操作文件系统中的路径。
path
是 Node.js 中的核心模块,因此,您无需安装即可使用它。
const path = require('path');
Code language: JavaScript (javascript)
如果您使用 ES 模块,您可以按如下方式导入路径。
import path from 'path';
Code language: JavaScript (javascript)
有用的路径属性
path
对象具有 sep
属性,该属性表示特定于平台的路径分隔符。
path.sep
Code language: JavaScript (javascript)
path.sep
在 Windows 上返回 \
,在 Linux 和 macOS 上返回 /
。
path
对象还具有 delimiter
属性,该属性表示路径分隔符。
path.delimiter
Code language: JavaScript (javascript)
path.delimiter
在 Windows 上返回 ;
,在 Linux 和 macOS 上返回 :
。
方便的路径方法
以下是 path
模块的一些方便方法,您可能经常使用它们。
path.basename(path, [,ext])
path.dirname(path)
path.extname(path)
path.format(pathObj)
path.isAbsolute(path)
path.join(...path)
path.normalize(path)
path.parse(path)
path.relative(from, to)
path.resolve(...path)
Code language: JavaScript (javascript)
path.basename(path[, ext])
path.basename()
返回指定路径的最后一部分。例如
import path from 'path';
let result = path.basename('/public_html/home/index.html');
console.log(result);
Code language: JavaScript (javascript)
输出
index.html
Code language: JavaScript (javascript)
ext
参数会从路径中过滤掉扩展名。
import path from 'path';
let result = path.basename('/public_html/home/index.html', '.html');
console.log(result);
Code language: JavaScript (javascript)
输出
index
Code language: JavaScript (javascript)
path.dirname(path)
path.dirname()
方法返回指定路径的目录名。例如
import path from 'path';
let result = path.dirname('/public_html/home/index.html');
console.log(result);
Code language: JavaScript (javascript)
输出
/public_html/home
Code language: JavaScript (javascript)
请注意,path.dirname()
会忽略尾随目录。
path.extname(path)
path.extname()
返回路径的扩展名。例如
import path from 'path';
console.log(path.extname('index.html'));
console.log(path.extname('app.js'));
console.log(path.extname('node.js.md'));
Code language: JavaScript (javascript)
输出
.html
.js
.md
Code language: JavaScript (javascript)
path.format(pathObj)
path.format()
方法从指定的 path
对象返回路径字符串。
import path from 'path';
let pathToFile = path.format({
dir: 'public_html/home/js',
base: 'app.js',
});
console.log(pathToFile);
Code language: JavaScript (javascript)
输出(在 Linux 或 macOS 上)
public_html/home/js/app.js
Code language: JavaScript (javascript)
path.isAbsolute(path)
如果指定的路径是绝对路径,则 path.isAbsolute()
返回 true
。
例如,在 Windows 上
import path from 'path';
let result = path.isAbsolute('C:\\node.js\\');
console.log(result); // true
result = path.isAbsolute('C:/node.js/');
console.log(result); // true
result = path.isAbsolute('/node.js');
console.log(result); // true
result = path.isAbsolute('home/');
console.log(result); // false
result = path.isAbsolute('.');
console.log(result); // false
Code language: JavaScript (javascript)
在 Linux & macOS 上
import path from 'path';
let result = path.isAbsolute('/node/js/');
console.log(result); // true
result = path.isAbsolute('/node/..');
console.log(result); // true
result = path.isAbsolute('node/');
console.log(result); // false
result = path.isAbsolute('.');
console.log(result); // false
Code language: JavaScript (javascript)
path.join(…paths)
path.join()
方法有两个作用
- 使用特定于平台的分隔符作为分隔符连接一系列路径段
- 规范化结果路径并将其返回。
例如
import path from 'path';
let pathToDir = path.join('/home', 'js', 'dist', 'app.js');
console.log(pathToDir);
Code language: JavaScript (javascript)
输出(在 Windows 上)
\home\js\dist\app.js
Code language: JavaScript (javascript)
path.parse(path)
path.parse()
方法返回一个对象,其属性表示路径元素。返回的对象具有以下属性
- root: 根目录
- dir: 从根目录开始的目录路径
- base: 文件名 + 扩展名
- name: 文件名
- ext: 扩展名

例如,在 Windows 上
import path from 'path';
let pathObj = path.parse('d:/nodejs/html/js/app.js');
console.log(pathObj);
Code language: JavaScript (javascript)
输出
{
root: 'd:/',
dir: 'd:/nodejs/html/js/',
base: 'app.js',
ext: '.js',
name: 'app'
}
Code language: JavaScript (javascript)
在 Linux 或 macOS 上
import path from 'path';
let pathObj = path.parse('/nodejs/html/js/app.js');
console.log(pathObj);
Code language: JavaScript (javascript)
输出
{
root: '/',
dir: '/nodejs/html/js',
base: 'app.js',
ext: '.js',
name: 'app'
}
Code language: JavaScript (javascript)
path.normalize(path)
path.normalize()
方法规范化指定的路径。它还解析 '..'
和 '.'
段。
例如,在 Windows 上
import path from 'path';
let pathToDir = path.normalize('C:\\node.js/module/js//dist');
console.log(pathToDir);
Code language: JavaScript (javascript)
输出
C:\node.js\module\js\dist
Code language: JavaScript (javascript)
path.relative(from, to)
path.relative()
接受两个参数并返回它们之间的相对路径,该路径基于当前工作目录。
例如,在 Linux 或 macOS 上
import path from 'path';
let relativePath = path.relative('/home/user/config/', '/home/user/js/');
console.log(relativePath);
Code language: JavaScript (javascript)
输出
../js
Code language: JavaScript (javascript)
path.resolve(…paths)
path.resolve()
方法接受一系列路径或路径段,并将其解析为绝对路径。path.resolve()
方法从右到左逐个预置每个后续路径,直到完成构建绝对路径。
如果您不向 path.resolve()
方法传递任何参数,它将返回当前工作目录。
例如,在 Linux 或 macOS 上
import { fileURLToPath } from 'url';
import path, { dirname } from 'path';
const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);
console.log('Current working directory:', __dirname);
console.log(path.resolve());
Code language: JavaScript (javascript)
输出
/home/john
/home/john
Code language: JavaScript (javascript)
在这个示例中,path.resolve()
方法返回与当前工作目录相同的路径。
在 Linux 或 macOS 上查看另一个示例
import path from 'path';
// Resolve 2 segments with the current directory
const path1 = path.resolve('html', 'index.html');
console.log(path1);
// Resolve 3 segments with the current directory
const path2 = path.resolve('html', 'js', 'app.js');
console.log(path2);
// Treat of the first segment as root and ignore
// the current working directory
const path3 = path.resolve('/home/html', 'about.html');
console.log(path3);
Code language: JavaScript (javascript)
输出
/home/john/html/index.html
/home/john/html/js/app.js
/home/html/about.html
Code language: JavaScript (javascript)
总结
- 使用
path
核心模块可以有效地操作文件路径。 path
模块是特定于平台的。