深入理解node.js之path模块
前言
在 node.js 中,路径处理是一个非常常见的需求。node.js 提供了 path 模块来处理路径相关的问题。在本文中,我们将深入理解 node.js 的 path 模块。
path 模块介绍
path 模块是 node.js 的内置模块,它提供了一些有用的函数来处理和转换文件路径。path 模块主要包含以下方法:
path.normalize(p)
: 规范化路径,将路径转换为标准格式。path.join([...paths])
: 连接多个路径片段,返回拼接后的路径。path.resolve([...paths])
: 将路径或路径片段转换为绝对路径。path.relative(from, to)
: 返回从 from 到 to 的相对路径。path.dirname(p)
: 返回路径的目录名。path.basename(p[, ext])
: 返回路径的最后一部分,可选地提供拓展名的过滤。path.extname(p)
: 返回路径的扩展名。
使用 path 模块
在使用 path 模块时,建议使用 require
函数引入模块。代码如下:
const path = require('path');
path.normalize(p)
方法
path.normalize(p)
方法将路径 p 规范化并返回一个标准的路径。规范化路径的过程包括:
- 将斜杠(/)和反斜杠(\)转换为当前系统下的路径分隔符。
- 解析相对路径和特殊符号(如
..
和.
)。 - 以单个斜杠结尾的路径将保留结尾的斜杠。
示例代码:
const path = require('path');
const p1 = path.normalize('/foo/bar//baz/asdf/quux/..');
const p2 = path.normalize('/foo/bar//baz/asdf/quux/.');
const p3 = path.normalize('/foo/bar/quux/.');
console.log(p1); // "/foo/bar/baz/asdf"
console.log(p2); // "/foo/bar/baz/asdf/quux"
console.log(p3); // "/foo/bar/quux"
path.join([...paths])
方法
path.join([...paths])
方法将多个路径片段连接起来并返回拼接后的路径。该方法会自动规范化路径并在相邻路径之间添加分隔符。
示例代码:
const path = require('path');
const p1 = path.join('/foo', 'bar', 'baz/asdf', 'quux', '..');
const p2 = path.join('/foo', 'bar//baz', 'asdf', 'quux');
console.log(p1); // "/foo/bar/baz/asdf"
console.log(p2); // "/foo/bar/baz/asdf/quux"
path.resolve([...paths])
方法
path.resolve([...paths])
方法将多个路径片段或绝对路径拼接成一个绝对路径。该方法会在拼接前先规范化路径。
示例代码:
const path = require('path');
const p1 = path.resolve('/foo/bar', './baz');
const p2 = path.resolve('/foo/bar', '/baz');
const p3 = path.resolve('/foo/bar', '/baz', '../quux');
const p4 = path.resolve('wwwroot', 'static_files/png/', '../gif/image.gif');
console.log(p1); // "/foo/bar/baz"
console.log(p2); // "/baz"
console.log(p3); // "/foo/quux"
console.log(p4); // "/Users/someone/Projects/node/wwwroot/static_files/gif/image.gif"
path.relative(from, to)
方法
path.relative(from, to)
方法返回从 from 到 to 的相对路径。
示例代码:
const path = require('path');
const p1 = path.relative('/data/orandea/test/aaa', '/data/orandea/impl/bbb');
const p2 = path.relative('/data/orandea/test/aaa', '/data/orandea/impl/bbb/ccc.js');
const p3 = path.relative('/data/orandea/test/aaa/bbb', '/data/orandea/impl/bbb/ccc');
console.log(p1); // "../../impl/bbb"
console.log(p2); // "../../impl/bbb/ccc.js"
console.log(p3); // "../../../impl/bbb/ccc"
path.dirname(p)
方法
path.dirname(p)
方法返回路径 p 的目录名。
示例代码:
const path = require('path');
const dir1 = path.dirname('/foo/bar/baz/asdf/quux');
const dir2 = path.dirname('/foo/bar/baz/asdf/quux/.');
console.log(dir1); // "/foo/bar/baz/asdf"
console.log(dir2); // "/foo/bar/baz/asdf/quux"
path.basename(p[, ext])
方法
path.basename(p[, ext])
方法返回路径 p 的最后一部分(文件名),可选地提供拓展名的过滤。
示例代码:
const path = require('path');
const base1 = path.basename('/foo/bar/baz/asdf/quux.html');
const base2 = path.basename('/foo/bar/baz/asdf/quux.html', '.html');
console.log(base1); // "quux.html"
console.log(base2); // "quux"
path.extname(p)
方法
path.extname(p)
方法返回路径 p 的扩展名。
示例代码:
const path = require('path');
const ext1 = path.extname('/foo/bar/baz/asdf/quux.html');
const ext2 = path.extname('index.coffee.md');
console.log(ext1); // ".html"
console.log(ext2); // ".md"
总结
本文介绍了 node.js 的 path 模块并提供了相关的使用示例。path 模块是一个常用的工具,它可以帮助我们更好地处理路径相关的问题。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:深入理解node.js之path模块 - Python技术站