当前位置: 首页 > news >正文

【Node.js入门笔记9---path 模块】

Node.js入门笔记9

  • Node.js---path 模块
  • 一、核心功能
    • 0.学习path的前提
    • 1. 使用 path.join() 安全拼接路径
    • 2. path.resolve(),路径解析(绝对路径)
    • 3. 路径信息提取
    • 4. 路径规范化
  • 二、跨平台关键点
    • 1. 路径分隔符
    • 2. 环境变量分隔符
    • 3. 路径格式解析
    • 4. 路径格式重组
  • 三、与 __dirname 和 __filename 的关系
  • 四、实用场景示例
  • 五、总结表

Node.js—path 模块

Node.js 中的 path 模块是处理文件路径的核心工具,专门用于跨平台路径操作。它可以帮助你解决路径拼接、解析、规范化等问题,避免手动处理路径分隔符(/ 或 \)带来的兼容性问题。以下是系统学习指南:

一、核心功能

0.学习path的前提

如果要在 JavaScript 代码中,使用 path模块来操作文件,则需要使用如下的方式先导入它:

const path = require('path');

1. 使用 path.join() 安全拼接路径

语法格式:

const fullPath = path.join('src', 'assets', 'image.jpg');
// Windows: 'src\assets\image.jpg'
// Linux/macOS: 'src/assets/image.jpg'

2. path.resolve(),路径解析(绝对路径)

语法格式:

// 将相对路径解析为绝对路径
const absolutePath = path.resolve('src', 'app.js');
// 假设当前目录是 /home/user/project,则结果为:
// /home/user/project/src/app.js

3. 路径信息提取

语法格式:

const filePath = '/home/user/project/src/app.js';

console.log(path.basename(filePath)); // 'app.js'(文件名)
console.log(path.dirname(filePath));  // '/home/user/project/src'(目录)
console.log(path.extname(filePath));  // '.js'(扩展名)

4. 路径规范化

语法格式:

// 处理冗余的路径符号(如 .. 或 .)
path.normalize('/foo/bar//baz/asdf/..'); 
// 结果:'/foo/bar/baz'

二、跨平台关键点

1. 路径分隔符

语法格式:

console.log(path.sep); // 输出当前系统的分隔符(Windows 是 `\`,其他是 `/`)

2. 环境变量分隔符

1.fs.open():手动打开文件获取文件描述符。
语法格式:

console.log(path.delimiter); // Windows 是 `;`,其他是 `:`

2.fs.close():关闭文件描述符。
语法格式:

fs.close(fd, callback)

3. 路径格式解析

语法格式:

const parsed = path.parse('/home/user/file.txt');
// 返回:
// {
//   root: '/',
//   dir: '/home/user',
//   base: 'file.txt',
//   ext: '.txt',
//   name: 'file'
// }

4. 路径格式重组

语法格式:

const obj = { root: '/', name: 'file', ext: '.txt' };
path.format(obj); // '/file.txt'

三、与 __dirname 和 __filename 的关系

语法格式:

__dirname:当前文件所在目录的绝对路径
__filename:当前文件的绝对路径

常见误区
❌ 错误方式:

const badPath = __dirname + '/../assets/image.jpg'; // 跨平台可能出错

✅ 正确方式:

const goodPath = path.join(__dirname, '..', 'assets', 'image.jpg');

最佳实践:永远用 path.join(__dirname, …) 代替字符串拼接!

四、实用场景示例

场景1:安全读取配置文件

const configPath = path.join(__dirname, 'config', 'settings.json');
const config = require(configPath);

场景2:处理用户上传的文件路径

// 用户可能传入带有 ../ 的路径,使用 normalize 防御
const userInput = '../../secret.txt';
const safePath = path.normalize(path.join(__dirname, 'uploads', userInput));

场景3:动态生成多平台脚本

const scriptPath = path.join(process.cwd(), 'scripts', 'start.sh');

场景4:从一个文件路径中提取文件名(不带扩展名)和父目录

const filePath = '/usr/local/docs/report.pdf';

const parentDir = path.dirname(filePath); // '/usr/local/docs'
const fileName = path.basename(filePath, path.extname(filePath)); // 'report'

五、总结表

node截图

相关文章:

  • 上海蒂正科技有限公司:技术驱动数字化,打造高端企业门户新标杆
  • 数组模拟邻接表 #图论
  • 递归陷阱:如何优雅地等待 props.parentRoute?
  • 使用Java实现Oracle表结构转换为PostgreSQL的示例方案(AI)
  • 前端对接生成式AI接口(类ChatGPT)问题汇总
  • MySQL-sql优化
  • 网络运维学习笔记(DeepSeek优化版) 021 HCIA-Datacom新增知识点03园区网典型组网架构及案例实战
  • 【Hbase】查看所有表
  • EMC整改案例:某网络机顶盒网口辐射
  • java-正则表达式-集合-泛型-注解-异常
  • 0-组合优化图神经网络的退火机器辅助学习(arxiv 25)(完)
  • 在 Windows 系统下,将 FFmpeg 编译为 .so 文件
  • Linux下JDK1.8安装配置
  • 家族族谱管理系统基于Spring Boot
  • 快速查询手机是否处于联网状态?
  • 【SpringMVC】SpringMVC进阶,类型转换器源码分析,json转换,视图解析器,以及操作各种域的API
  • 遨游科普|三防平板是什么?哪些领域能用到?
  • 82.RadioButton的选中处理逻辑 C#例子 WPF例子
  • Linux中的yum和vim工具使用总结
  • OpenCV中的矩阵操作
  • 西藏日喀则市拉孜县发生5.5级地震,震源深度10千米
  • 我国成功发射遥感四十号02组卫星
  • 复旦相辉堂上演原创历史人物剧《王淑贞》,胡歌参演
  • 贵州省总工会党组成员、副主席梁伟接受审查调查
  • 名帅大挪移提前开启,意属皇马的阿隆索会是齐达内第二吗
  • 欧洲理事会前主席米歇尔受聘中欧国际工商学院特聘教授,上海市市长龚正会见