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

【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截图


http://www.kler.cn/a/596284.html

相关文章:

  • PHP函数与数据处理
  • 深入理解 JavaScript/TypeScript 中的假值(Falsy Values)与逻辑判断 ✨
  • Oracle 常用语法汇总
  • pytest的测试报告allure
  • Vue3:构建高效用户界面的利器
  • OpenSSL 3.0.2 报 dh key too small 的问题
  • [AI建模] 使用Pinokio本地化部署混元2D到3D AI建模服务
  • [极客大挑战 2019]Knife——3.20BUUCTF练习day4(2)
  • 田间机器人幼苗视觉检测与护苗施肥装置研究(大纲)
  • 如何在 Flutter 中使用 WebRTC
  • Linux系统中安装各种常用中间件
  • 在QT中进行控件提升操作
  • gitlab-ci.yml文件详解
  • 【C++网络编程】第2篇:简单的TCP服务器与客户端
  • 域名如何绑定服务
  • JetsonNano —— 4、Windows下对JetsonNano板卡烧录刷机Ubuntu20.04版本(官方教程)
  • 【2025】基于springboot+vue的陪玩服务预约系统(源码、万字文档、图文修改、调试答疑)
  • 禁用Git状态标记
  • 修改HuggingFace模型默认缓存路径
  • 【yolo】使用 Netron 可视化深度学习模型:从 YOLOv1 到 YOLOv8 的探索