深入理解node.js之path模块

yizhihongxing

深入理解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日

相关文章

  • TypeScript保姆级基础教程

    TypeScript保姆级基础教程攻略 1. 了解基础语法 TypeScript是JavaScript的超集,兼容JavaScript的所有语法。因此,首先要熟悉JavaScript的基础语法,包括变量、函数、循环、条件判断等内容。进一步了解TypeScript的静态类型定义、泛型和ES6语法等特性。 示例: 基本变量声明 let str: string =…

    node js 2023年6月8日
    00
  • 详解Node.js中的模块化方法

    详解Node.js中的模块化方法 简介 在 Node.js 中,一个 js 文件代表一个模块。Node.js 的模块化遵循的是 CommonJS 规范,它规定了模块的定义、模块的引用等方面的标准。这套规范被 Node.js 实现了,并且已经被广泛接受和使用。 一个 Node.js 模块中,有三个重要的对象:module、exports 和 require。 …

    node js 2023年6月8日
    00
  • Nodejs如何解决跨域(CORS)

    Node.js可以通过设置header头或使用第三方模块实现跨域访问(CORS)。 一、设置header头 在服务端设置Access-Control-Allow-Origin头即可实现跨域访问: var http = require(‘http’); var server = http.createServer(function(request, respo…

    node js 2023年6月8日
    00
  • JS创建Tag标签的方法详解

    下面是针对“JS创建Tag标签的方法详解”的完整攻略。 1. document.createElement()方法 JavaScript中提供了 document.createElement() 方法,可以通过该方法创建指定的HTML标签元素。 语法格式如下: document.createElement(tagName); 其中 tagName 是字符串类…

    node js 2023年6月8日
    00
  • Node.js的进程管理的深入理解

    Node.js 进程管理是 Node.js 一个重要的功能,可以帮助我们更好地管理和控制 Node.js 运行过程中的进程,提高 Node.js 的稳定性和可靠性。在本文中,我们将深入探讨 Node.js 进程管理的相关内容,包括进程的创建、运行、退出,以及一些常用的进程管理方式。 进程的创建 在 Node.js 中,我们可以通过调用 child_proce…

    node js 2023年6月8日
    00
  • 理解 Node.js 事件驱动机制的原理

    理解 Node.js 事件驱动机制的原理,需要掌握以下几个关键概念和步骤: 事件循环:Node.js 是单线程的,使用事件循环机制来实现异步操作。事件循环是 Node.js 的核心,所有的异步 I/O 操作都依赖它。 异步 I/O:Node.js 通过异步 I/O 操作实现高效的非阻塞式操作,这样可以提高程序的吞吐量和响应速度。 事件队列:事件队列是保存在事…

    node js 2023年6月8日
    00
  • 深入了解 Node的多进程服务实现

    以下是关于“深入了解 Node 的多进程服务实现”的完整攻略: 一、为什么要使用多进程服务? 在 Node 的单线程模型中,若一个请求过于耗时,那么后续的请求便会被阻塞,导致程序响应缓慢,用户体验下降。因此,使用多进程服务可以将请求分配给多个进程进行处理,避免由于一个过于耗时的请求而导致其他请求的阻塞,从而提高程序的稳定性和性能。 二、Node 服务的多进程…

    node js 2023年6月8日
    00
  • Node.js API详解之 V8模块用法实例分析

    当谈到Node.js的API时,V8模块是一个重要的组件。V8模块提供了操作 JavaScript 代码的能力,并且是Node.js运行时的核心。 下面将会详细讲解V8模块的用法,包括如何使用V8模块来编写高效的代码和如何调试V8代码。 V8模块的基本用法 Node.js中通过V8模块来访问JavaScript引擎V8中的API。V8模块是Node.js中最…

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