nodejs学习笔记:理解和使用path
nodejs学习笔记:理解和使用path
学习编程|2024-11-29|最后更新: 2024-11-29

理解path概念

路径有什么用

路径就像是计算机世界里的地址系统就像我们在现实世界需要准确的地址来找到一家商店、一所学校或者一个朋友的家,计算机也需要路径来定位和管理它的资源。
例如我们在以下场景就离不开路径:
  • 文件管理
  • 软件安装和运行
  • 网站开发,web应用,web资源
  • 资源访问控制
  • 系统配置
  • 数据组织和备份
  • 程序协同工作,不同模块,系统协作

相对路径和绝对路径

类比去问路:朝阳公园怎么走?(在地铁站内问) 路人指路方式:
  1. 绝对路径:北京市朝阳区xx街道xx号x门;
  1. 相对路径:出xx地铁站x口往北走xx米
类比计算机:
绝对路径:
  • 总是从根目录开始(Windows 是盘符,Linux/Mac 是 /)
  • 提供完整的位置信息
  • 无论在哪里使用都指向同一个位置
相对路径:
  • 相对于当前位置出发经过的路径
  • 相对路径中的特殊符号:

windows vs. POSIX

windows和linux/unix系统的路径写法不同
  • windows:
    • 使用反斜杠\\
    • 环境变量:路径分隔符使用分号;
    • 根目录使用盘符,比如C:D:
    • 大小写不敏感
  • linux/unix:
    • 使用正斜杠/
    • 环境变量:路径分隔符使用冒号:
    • 根目录使用正斜杠/
    • 大小写敏感

nodejs里的path

path常用的方法结合上面那张图看最佳

path.dirname(path)

返回当前所在目录名称

path.extname(path)

返回扩展名

path.join([…paths])

将路径片段组合在一起,会处理不同系统的路径分隔符,去除多余的分隔符,会标准化,也会解析...的结果,返回最终标准的path
上面的第一个例子就是解析过..的例子,让我们一步步分析这个路径的构建过程:
  1. 首先路径是:/foo
  1. 添加 bar,变成:/foo/bar
  1. 添加 baz/asdf,变成:/foo/bar/baz/asdf
  1. 添加 quux,变成:/foo/bar/baz/asdf/quux
  1. 最后遇到 ..,这告诉系统"返回上一级",所以删除了最后的 quux

path.normalize(path)

将路径标准化

path.parse(path)

将path解析成一个对象

“__dirname”当前文件所在的目录完整路径

举例说明:

process.cwd()获得当前工作目录

使用process.cwd()可以获得当前目录,举例:
但是要注意一个小陷阱:如果你从其他目录启动应用(比如 node src/main.js),process.cwd() 会返回你执行命令时所在的目录,而不是项目根目录。这就像你在不同的地方打开同一个应用,得到的"当前位置"是不同的。

在处理path时的最佳实践

1. 使用 path 模块而不是手动字符串操作

让我们看看为什么这很重要:
这样做的原因是:
  1. 自动处理不同操作系统的路径分隔符
  1. 处理多余的分隔符
  1. 提供更好的代码可读性

2. 使用相对路径时要小心

考虑这个场景:
原因:
  1. 相对路径依赖于当前工作目录 (process.cwd())
  1. 当应用从不同位置启动时可能会出错
  1. \_\_dirname 总是指向当前文件所在目录

3. 路径规范化和安全性

处理用户输入的路径时:
这样做可以:
  1. 防止路径遍历攻击
  1. 确保路径格式的一致性
  1. 限制访问范围在允许的目录内

4. 路径分割和解析

当需要处理路径的不同部分时:

5. 配置文件中的路径管理

在项目配置中处理路径:

6. 错误处理和日志记录

处理路径操作时的错误:

7. 环境变量和配置

处理不同环境下的路径:
这些最佳实践帮助我们:
  • 提高代码的可维护性
  • 增强安全性
  • 确保跨平台兼容性
  • 减少错误发生的可能性
  • 使代码更容易测试和调试
迈出出海第一步,搞定域名选购[Prompt]CS课程讲师
Loading...