深入理解node.js之path模块

深入理解node.js之path模块

前言

在 node.js 中,路径处理是一个非常常见的需求。node.js 提供了 path 模块来处理路径相关的问题。在本文中,我们将深入理解 node.js 的 path 模块。

path 模块介绍

path 模块是 node.js 的内置模块,它提供了一些有用的函数来处理和转换文件路径。path 模块主要包含以下方法:

  • path.normalize(p): 规范化路径,将路径转换为标准格式。
  • path.join([...paths]): 连接多个路径片段,返回拼接后的路径。
  • path.resolve([...paths]): 将路径或路径片段转换为绝对路径。
  • path.relative(from, to): 返回从 from 到 to 的相对路径。
  • path.dirname(p): 返回路径的目录名。
  • path.basename(p[, ext]): 返回路径的最后一部分,可选地提供拓展名的过滤。
  • path.extname(p): 返回路径的扩展名。

使用 path 模块

在使用 path 模块时,建议使用 require 函数引入模块。代码如下:

const path = require('path');

path.normalize(p) 方法

path.normalize(p) 方法将路径 p 规范化并返回一个标准的路径。规范化路径的过程包括:

  • 将斜杠(/)和反斜杠(\)转换为当前系统下的路径分隔符。
  • 解析相对路径和特殊符号(如 ...)。
  • 以单个斜杠结尾的路径将保留结尾的斜杠。

示例代码:

const path = require('path');

const p1 = path.normalize('/foo/bar//baz/asdf/quux/..');
const p2 = path.normalize('/foo/bar//baz/asdf/quux/.');
const p3 = path.normalize('/foo/bar/quux/.');

console.log(p1); // "/foo/bar/baz/asdf"
console.log(p2); // "/foo/bar/baz/asdf/quux"
console.log(p3); // "/foo/bar/quux"

path.join([...paths]) 方法

path.join([...paths]) 方法将多个路径片段连接起来并返回拼接后的路径。该方法会自动规范化路径并在相邻路径之间添加分隔符。

示例代码:

const path = require('path');

const p1 = path.join('/foo', 'bar', 'baz/asdf', 'quux', '..');
const p2 = path.join('/foo', 'bar//baz', 'asdf', 'quux');

console.log(p1); // "/foo/bar/baz/asdf"
console.log(p2); // "/foo/bar/baz/asdf/quux"

path.resolve([...paths]) 方法

path.resolve([...paths]) 方法将多个路径片段或绝对路径拼接成一个绝对路径。该方法会在拼接前先规范化路径。

示例代码:

const path = require('path');

const p1 = path.resolve('/foo/bar', './baz');
const p2 = path.resolve('/foo/bar', '/baz');
const p3 = path.resolve('/foo/bar', '/baz', '../quux');
const p4 = path.resolve('wwwroot', 'static_files/png/', '../gif/image.gif');

console.log(p1); // "/foo/bar/baz"
console.log(p2); // "/baz"
console.log(p3); // "/foo/quux"
console.log(p4); // "/Users/someone/Projects/node/wwwroot/static_files/gif/image.gif"

path.relative(from, to) 方法

path.relative(from, to) 方法返回从 from 到 to 的相对路径。

示例代码:

const path = require('path');

const p1 = path.relative('/data/orandea/test/aaa', '/data/orandea/impl/bbb');
const p2 = path.relative('/data/orandea/test/aaa', '/data/orandea/impl/bbb/ccc.js');
const p3 = path.relative('/data/orandea/test/aaa/bbb', '/data/orandea/impl/bbb/ccc');

console.log(p1); // "../../impl/bbb"
console.log(p2); // "../../impl/bbb/ccc.js"
console.log(p3); // "../../../impl/bbb/ccc"

path.dirname(p) 方法

path.dirname(p) 方法返回路径 p 的目录名。

示例代码:

const path = require('path');

const dir1 = path.dirname('/foo/bar/baz/asdf/quux');
const dir2 = path.dirname('/foo/bar/baz/asdf/quux/.');

console.log(dir1); // "/foo/bar/baz/asdf"
console.log(dir2); // "/foo/bar/baz/asdf/quux"

path.basename(p[, ext]) 方法

path.basename(p[, ext]) 方法返回路径 p 的最后一部分(文件名),可选地提供拓展名的过滤。

示例代码:

const path = require('path');

const base1 = path.basename('/foo/bar/baz/asdf/quux.html');
const base2 = path.basename('/foo/bar/baz/asdf/quux.html', '.html');

console.log(base1); // "quux.html"
console.log(base2); // "quux"

path.extname(p) 方法

path.extname(p) 方法返回路径 p 的扩展名。

示例代码:

const path = require('path');

const ext1 = path.extname('/foo/bar/baz/asdf/quux.html');
const ext2 = path.extname('index.coffee.md');

console.log(ext1); // ".html"
console.log(ext2); // ".md"

总结

本文介绍了 node.js 的 path 模块并提供了相关的使用示例。path 模块是一个常用的工具,它可以帮助我们更好地处理路径相关的问题。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:深入理解node.js之path模块 - Python技术站

(0)
上一篇 2023年6月8日
下一篇 2023年6月8日

相关文章

  • Node.js 搭建后端服务器内置模块( http+url+querystring 的使用)

    下面是“Node.js 搭建后端服务器内置模块(http+url+querystring的使用)”的完整攻略。 简介 Node.js 是一个使用 JavaScript 编写的跨平台的后端程序。在 Node.js 中,内置了许多模块,包括用于搭建服务器的 http、用于解析 URL 地址的 url,以及用于解析查询字符串的 querystring 等模块。 在…

    node js 2023年6月8日
    00
  • Node.js之http模块的用法

    下面我将为您提供关于”Node.js之http模块的用法”的完整攻略。 Node.js之http模块的用法 1. http模块简介 Node.js的http模块提供了创建HTTP服务器和客户端的基本功能。通过http模块,我们能够轻松地创建Web服务器、简化HTTP客户端的请求过程等。 2. HTTP服务器和客户端的创建 http模块提供的方法包括: htt…

    node js 2023年6月8日
    00
  • Node中的Events模块介绍及应用

    Node中的Events模块介绍及应用 1. 什么是Events模块 Events模块是Node中处理系统或应用程序中发生的事件的核心 Events模块大量应用于基于事件驱动的异步系统中,如网络编程、用户输入等场景 Events模块提供了一个事件触发与事件监听的能力,能够实现事件的发布/订阅、消息队列等开发 2. Events模块主要API on(event…

    node js 2023年6月8日
    00
  • Node.js Sequelize如何实现数据库的读写分离

    Node.js中的Sequelize是一种非常流行的ORM(对象关系映射)框架,它提供了兼容多种数据库的API,支持数据库的读写分离。下面是关于如何使用Sequelize实现数据库的读写分离的攻略: 什么是数据库读写分离 数据库读写分离(database read-write separation)是指将数据库的读操作和写操作分别放在不同的实例上,以实现更高…

    node js 2023年6月8日
    00
  • 13道关于JavaScript正则表达式的面试题

    关于JavaScript正则表达式的面试题是前端开发者面试过程中经常会遇到的问题。以下是针对这些问题的完整攻略,希望对您有所帮助。 问题1:什么是正则表达式? 正则表达式是一种描述匹配模式的字符串。它们通常用于搜索和替换文本。 问题2:怎样创建正则表达式? JavaScript中可以通过两种方式创建正则表达式: 使用RegExp对象:可以通过new关键字实例…

    node js 2023年6月8日
    00
  • nodejs发送http请求时遇到404长时间未响应的解决方法

    关于“nodejs发送http请求时遇到404长时间未响应的解决方法”的完整攻略,我可以提供以下几点建议和示例说明: 问题背景 在使用 Node.js 发送 HTTP 请求时,可能会遇到服务器返回 404 状态码时,请求会长时间未响应的问题。这种情况通常发生在使用第三方库(如 axios、request 等)发起请求时。假如我们使用 axios 库来发送请求…

    node js 2023年6月8日
    00
  • Node.js设置定时任务之node-schedule模块的使用详解

    Node.js设置定时任务之node-schedule模块的使用详解 引言 在Node.js开发中,我们经常需要设置定时任务,来执行一些周期性的任务,比如定时发送邮件、数据备份、定时爬取数据等。node-schedule是一个可以非常方便地设置定时任务的模块,本篇文章就来详细讲解其使用方法。 安装 在开始使用node-schedule模块前,我们需要先安装它…

    node js 2023年6月8日
    00
  • node.js安装及HbuilderX配置详解

    Node.js 安装及 HbuilderX 配置详解 安装 Node.js 打开 Node.js 官网(https://nodejs.org/en/),选择适合自己系统的版本下载。 安装 Node.js,安装过程中可以参考官方文档进行操作。 安装完成后,在终端(Mac、Linux)或命令提示符(Windows)输入以下命令,检验 Node.js 是否安装成功…

    node js 2023年6月8日
    00
合作推广
合作推广
分享本页
返回顶部