[node]node内置模块path

本文详细介绍了Node.js的内置path模块,包括其在模块导入中的使用、各种方法如resolve、parse、basename等的功能和示例,以及process对象中的cwd属性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[node]node内置模块path

  • 模块的导入
  • 路径值
    • __filename
    • __dirname
  • path 方法
    • path.resolve([from ...], to)
    • path.parse()
    • path.format()
    • path.basename(path[, ext])
    • path.extname(p)
    • path.dirname(p)
    • path.relative(from, to)
    • path.normalize(p)
    • path.isAbsolute(path)
    • path.join([path1][, path2][, ...])
  • path 属性
  • process
    • process.cwd()
      • 终端执行该命令
      • 文件中调用该命令

path是nodejs的内置模块,提供了处理和转换文件路径的工具

模块的导入

const path = require('path')

index.js文件,文件路径:D:node-test/server/bin/index.js

console.log(__filename);
console.log(__dirname);
console.log(path.resolve('./'));
console.log(path.resolve('..'));
console.log(path.resolve(__dirname,'..'));

路径值

__filename

输出当前命令的文件路径

console.log(__filename);
//D:node-test/server/bin/index.js

__dirname

输出当前命令的文件所在文件夹路径

console.log(__dirname);
//D:node-test/server/bin/

在AMD、CMD、CommonJs中都可以使用该值,但是在ES6环境下,该值失效

import path from 'path'
const __dirname = path.resolve();

path 方法

path.resolve([from …], to)

将 to 参数解析为绝对路径,给定的路径的序列是从右往左被处理的,后面每个 path 被依次解析,直到构造完成一个绝对路径(方法将一系列路径或路径段解析为绝对路径)

  • path.resolve(’./’)//当前命令所在项目的根目录
    //D:node-test
  • path.resolve(’…’);//当前项目所在文件夹
    //D:
  • path.resolve(__dirname,’…’)//执行当前命令文件所在文件夹的父级目录
    //D:node-test/server/bin/
  • path.resolve(__dirname,’…/’)//执行当前命令文件所在文件夹的父级目录
  • path.resolve(__dirname, ‘…/…/’)//执行当前命令所在文件夹的父级的父级目录

path.parse()

对路径进行解析

path.parse('C:\\path\\dir\\file.txt');

// Returns:
// { root: 'C:\\',
//   dir: 'C:\\path\\dir',
//   base: 'file.txt',
//   ext: '.txt',
//   name: 'file' }

path.format()

path.format(pathObject)

从对象中返回路径字符串,和 path.parse 相反。

path.basename(path[, ext])

path:文件所在路径,ext:文件后缀名,可选参数

path.basename('/foo/bar/baz/asdf/quux.html');
//  'quux.html'
path.basename('/foo/bar/baz/asdf/quux.html', '.html');
// 'quux'

path.extname§

返回路径中文件的后缀名,即路径中最后一个’.‘之后的部分。如果一个路径中并不包含’.‘或该路径只包含一个’.’ 且这个’.'为路径的第一个字符,则此命令返回空字符串。

path.extname('/foo/bar/baz/asdf/quux.html');// '.html'
path.extname('/foo/bar/baz/asdf');// ''

path.dirname§

返回路径中代表文件夹的部分,其实就是指定路径的父级文件夹

path.dirname('/foo/bar/baz/asdf/quux.html');// '/foo/bar/baz/asdf'
path.dirname('/foo/bar/baz/asdf');// '/foo/bar/baz'

path.relative(from, to)

用于将绝对路径转为相对路径,返回从from 到 to的相对路径(基于当前工作目录)

path.relative('C:\\orandea\\test\\aaa', 'C:\\orandea\\impl\\bbb');// 返回: '..\\..\\impl\\bbb'
path.relative('C:\test\index.js', 'C:\test\form.js');// "../form.js"

上述第二个例子返回的是"../form.js"而不是"./form.js",两个文件在同一个文件夹,相对路径应该是一个".",也就是"./form.js"才对啊????!!!!,但是实测却不是

而且对于上述的相对路径的说明感觉是反的,API 的参数说明不正确,例如真实案例中:
path1:'C:\test\form.js’在path2:'C:\test\index.js’中的相对路径,是"./form.js",也就是from=path1,to=path2,所以该方法的正常参数解析应该是:

path.relative(to,from),而不是path.relative(from, to)

path.normalize§

规范化路径,注意’…’ 和 ‘.’

path.isAbsolute(path)

判断参数 path 是否是绝对路径

path.join([path1][, path2][, …])

用于连接路径。该方法的主要用途是正确使用当前系统的路径分隔符,Unix系统是"/",Windows系统是""

path 属性

属性描述
path.sep平台的文件路径分隔符,’\’ 或 ‘/’。
path.delimiter平台的分隔符, ; or ‘:’.
path.posix提供上述 path 方法,不过总以 posix 兼容的方式交互
path.win32提供上述 path 方法,不过总以 win32 兼容的方式交互

process

process.execPath: 当前执行node的路径(如:/bin/node)

process.cwd()

使用的场景有两种

终端执行该命令

敲击命令的所在路径,即在那个路径下执行的该命令,得到就是该路径

  1. 在cmd终端中,输入node
    进入node的执行终端,如果不在node执行终端会无法识别process.cwd()
  2. 输入命令 process.cwd()
    输出即敲击命令的所在路径

文件中调用该命令

运行该文件的node命令所在目录,同终端一样

node file.js
<think>好的,我现在需要回答用户关于Node.js内置path模块的使用说明和功能介绍。首先,我需要回顾一下自己对这个模块的了解。记得path模块主要是用来处理文件路径的,提供了各种方法来操作路径字符串,比如拼接、解析、获取文件名等等。不过具体的函数名称和用法可能需要进一步确认。 根据用户提供的引用资料,引用[1]提到path模块用于处理和转换文件路径,对文件系统应用至关重要。引用[2]和[3]也指出它是内置模块,用于路径管理。引用[4]展示了如何引入模块和使用path.join方法。接下来,我需要将这些信息整合成一个结构清晰的回答。 首先,我应该介绍path模块的基本作用,说明为什么需要它。比如,不同操作系统的路径分隔符不同,path模块帮助处理这些差异。然后,列出常用的方法,每个方法给出功能、参数、示例和注意事项。例如,path.join用于拼接路径,path.resolve用于解析绝对路径,path.parse用于解析路径对象等等。 需要注意,用户要求所有行内数学表达式使用$...$格式,但在这个问题中可能用不到数学公式,所以重点放在代码块和正确使用LaTeX上。例如,代码示例需要用反引号包裹,并指定语言为javascript。同时,每个引用标识要自然地添加在相关段落的末尾。 可能还需要考虑用户的实际使用场景,比如开发Web应用时处理静态资源路径,或者构建工具时规范化路径。因此,在功能介绍时要结合实例,让读者更容易理解。比如,使用path.join来拼接目录和文件名,避免手动处理斜杠的问题。 另外,用户要求生成相关问题,我需要根据path模块的常见使用场景和潜在问题来设计问题。例如,如何在不同操作系统下保证路径一致性,或者如何获取文件扩展名等。 现在需要检查是否有遗漏的重要方法。根据已有的知识,常用的方法包括join、resolve、basename、dirname、extname、parse、format、normalize等。每个方法需要简要说明其用途和示例代码。 最后,确保回答结构清晰,分点介绍,每个部分都有示例代码,并正确添加引用标记。同时,生成的三个相关问题要相关且有实际意义,帮助用户进一步学习。</think>### Node.js 内置 path 模块使用说明与功能介绍 Node.js 的 `path` 模块是处理文件路径的核心工具,提供了一系列方法用于路径的拼接、解析、标准化等操作,能有效解决不同操作系统的路径格式差异问题(如 Windows 使用 `\`,类 Unix 系统使用 `/`)[^1][^2]。 --- #### 一、引入模块 ```javascript const path = require('path'); ``` --- #### 二、核心方法及示例 1. **`path.join(...paths)`** - **功能**:拼接多个路径片段,自动处理分隔符并标准化路径。 - **示例**: ```javascript const fullPath = path.join('/user', 'docs', 'file.txt'); // 输出(类 Unix): '/user/docs/file.txt' // 输出(Windows): '\\user\\docs\\file.txt' ``` - **注意**:避免手动拼接路径,防止因分隔符错误导致的问题[^4]。 2. **`path.resolve(...paths)`** - **功能**:从右向左解析路径片段,生成绝对路径。若参数以 `/` 开头(类 Unix)或盘符开头(Windows),则视为根路径。 - **示例**: ```javascript const absolutePath = path.resolve('src', 'app.js'); // 若当前目录为 /home/user,输出: '/home/user/src/app.js' ``` 3. **`path.basename(path[, ext])`** - **功能**:提取路径中的文件名,支持去除扩展名。 - **示例**: ```javascript path.basename('/user/docs/report.pdf'); // 'report.pdf' path.basename('/user/docs/report.pdf', '.pdf'); // 'report' ``` 4. **`path.dirname(path)`** - **功能**:返回路径的目录部分。 - **示例**: ```javascript path.dirname('/user/docs/report.pdf'); // '/user/docs' ``` 5. **`path.extname(path)`** - **功能**:获取文件扩展名(包含点 `.`)。 - **示例**: ```javascript path.extname('image.png'); // '.png' ``` 6. **`path.parse(path)` 与 `path.format(obj)`** - **功能**:路径解析与格式化。 - **示例**: ```javascript const parsed = path.parse('/user/docs/file.txt'); // 输出: { root: '/', dir: '/user/docs', base: 'file.txt', ext: '.txt', name: 'file' } const formatted = path.format({ dir: '/user', name: 'data', ext: '.json' }); // 输出: '/user/data.json' ``` 7. **`path.normalize(path)`** - **功能**:标准化路径,处理多余的 `.`、`..` 和斜杠。 - **示例**: ```javascript path.normalize('/user//docs/../src'); // '/user/src' ``` --- #### 三、应用场景 - **静态资源管理**:在 Web 服务器中拼接静态文件路径(如 CSS、图片)。 - **构建工具**:自动化脚本中处理文件路径依赖。 - **跨平台兼容**:统一处理不同操作系统的路径格式[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三知之灵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值