1. 程式人生 > 實用技巧 >極簡 Node.js 入門 - 2.1 Path

極簡 Node.js 入門 - 2.1 Path

極簡 Node.js 入門系列教程:https://www.yuque.com/sunluyong/node

本文更佳閱讀體驗:https://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


下文使用 POSIX 風格

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'

獲取基本資訊

  1. path.basename: 返回 path 最後一部分
  2. path.delimiter: 返回作業系統路徑界定符,Windows 返回 ; POSIX 返回 :
  3. path.dirname: 返回檔案目錄名
  4. path.extname: 返回路徑的拓展名(jquery.min.js 拓展名是 .js)
  5. path.isAbsolute 檢測路徑是否是絕對路徑
  6. path.sep: 返回路徑分隔符,Windows 返回 \ POSIX 返回 /