You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2.8 KiB
2.8 KiB
这篇文章是 Working with file system paths on Node.js 学习过程中的个人总结和笔记,大部分内容实际来自于原文章,如果你对 Nodejs 中的文件系统 (path) 感兴趣,我更建议你直接去看原文章。
在下文中 path 会被翻译成 路径
Nodejs 中路径相关(Path-related)的功能
- 大多数路径相关的功能都在模块
node:path
中 - 全局变量
process
拥有一些方法可以改变当前工作目录(current working directory) node:os
模块拥有一些函数可以返回重要的目录路径
关于 path
的使用有三种方法,它们分辨是
- 直接使用
path
- 使用平台特定版本(platform-specific versions)相关的
path
:path.posix
对应 Unix 系系统,包括 MacOSpath.win32
对应 Windows 系统
而直接使用 path
本身,它本身始终支持当前平台,内部似乎做了一些判断,可以从下面 Nodejs REPL 的例子中看出来:
path.parse === path.posix.parse // true
不同的 path
特定版本的处理逻辑也会有不同,如果没有使用正确的版本,可能会出现预期之外的结果
基本路径概念及其API支持
当前工作目录 current working directory(CWD)
- 如果我们使用一个包含相对路径的命令(command),该路径将针对 CWD 进行解析
- 如果我们在省略了一个路径的期望路径(就是不传),那么这时候会使用 CWD
- 在 UNIX 和 Windows 中切换 CWD 的命令都是
cd
process
是 Nodejs 提供的全局变量,它为我们提供了一些用于获取(getting)或设置(setting)CWD 的方法:
process.cwd()
会返回当前 CWDprocess.chdir(dirPath)
改变当前 CWD 至dirPath
- 在
dirPath
必须有一个路径 - 改变并不会影响 shell,只影响当前运行的 Nodejs 进程
- 在
当路径不完整(isn’t fully qualified)的时候,Nodejs 会使用 CWD 来填补缺失的部分
在 Windows 中的当前工作目录(CWD)
在 Windows 系统中,CWD 的工作会有些许不同:
- 每个驱动器都有一个 CWD
- 有一个当前驱动器(current drive)存在
我们可以使用 path.chdir()
同时修改两者:
process.chdir('C:\\Windows');
process.chdir('Z:\\tmp');
但是当我们重新访问一个驱动器的时候,Nodejs 会记住当前驱动器的前一个当前目录:
process.cwd() // 'Z:\\tmp'
process.chdir('C:');
process.cwd() // 'C:\\Windows'
完整路径和不完整路径以及路径解析
- 一个完整路径(fully qualified path)不依赖于任何信息,可以原样使用
- 一个不完整的路径(_partially qualified path)