極簡 Node.js 入門 – 2.1 Path
- 2020 年 8 月 10 日
- 筆記
極簡 Node.js 入門系列教程://www.yuque.com/sunluyong/node
本文更佳閱讀體驗://www.yuque.com/sunluyong/node/path
文件操作在 Node.js 編程中使用頻率很高,路徑處理是文件操作的前提,Node.js 通過 path 模組提供了路徑處理的基礎 API
Windows 與 POSIX 對比
path 模組在不同作業系統處理會有所差異, 當在 Windows 作業系統上運行時, path 模組會假定正被使用的是 Windows 風格的路徑(C:\temp\myfile.html),而在 POSIX 作業系統會默認使用 POSIX 的路徑風格(/tmp/myfile.html),路徑風格和作業系統不一致會出現意外的結果
POSIX,Portable Operating System Interface,是 UNIX 系統的一個設計標準,很多類 UNIX 系統也在支援兼容這個標準,如 Linux 和 Mac OS 所基於的 FreeBSD
path.basename()
方法用於返回一個路徑的 basename
// Windows 下執行
path.basename('C:\\temp\\myfile.html'); // myfile.html
// POSIX 下執行
path.basename('C:\\temp\\myfile.html'); //C:\\temp\\myfile.html
如果希望在不同作業系統都返回指定系統的結果,需要使用
- path.win32.method
- path.posix.method
parse(path)
parse.parse()
方法用來解析文件路徑,返回 對應的元資訊對象
path.parse('/home/user/dir/file.txt');
{ root: '/',
dir: '/home/user/dir',
base: 'file.txt',
ext: '.txt',
name: 'file' }
format(parseObject)
path.format()
方法從對象返迴路徑字元串,是 path.parse
的反操作
path.format({
root: '/ignored',
dir: '/home/user/dir',
base: 'file.txt'
});
// 返回: '/home/user/dir/file.txt'
normalize(path)
path.normalize()
方法規範化給定的 path,解析 ..
和 .
path.normalize('/foo/bar//baz/asdf/quux/..'); // 返回:/foo/bar/baz/asdf
join([…paths])
path.join()
使用作業系統規定的分隔符將參數中的 path 片段連接,並且規範化
path.join('/foo', 'bar', 'baz/asdf', 'quux', '..'); // 返回:/foo/bar/baz/asdf
path.relative(from, to)
path.relative()
方法根據當前工作目錄返回 from 到 to 的相對路徑
path.relative('/data/orandea/test/aaa', '/data/orandea/impl/bbb');
// 返回: '../../impl/bbb'
path.resolve([…paths])
path.resolve()
方法將路徑或路徑片段的序列解析為絕對路徑
path.resolve('/foo/bar', './baz');
// 返回: '/foo/bar/baz'
path.resolve('/foo/bar', '/tmp/file/');
// 返回: '/tmp/file'
path.resolve('wwwroot', 'static_files/png/', '../gif/image.gif');
// 如果當前工作目錄是 /home/myself/node,
// 則返回 '/home/myself/node/wwwroot/static_files/gif/image.gif'
獲取基本資訊
- path.basename: 返回 path 最後一部分
- path.delimiter: 返回作業系統路徑界定符,Windows 返回
;
POSIX 返回:
- path.dirname: 返迴文件目錄名
- path.extname: 返迴路徑的拓展名(jquery.min.js 拓展名是 .js)
- path.isAbsolute 檢測路徑是否是絕對路徑
- path.sep: 返迴路徑分隔符,Windows 返回
\
POSIX 返回/