Node.js 中常用内置模块(path 路径模块)

 更新时间:2022年09月08日 15:39:37   作者:海底烧烤店ai  
这篇文章主要介绍了Node.js 中常用内置模块(path 路径模块),文章围绕主题展开详细的相关介绍,具有一定的参考价值,感兴趣的朋友可以参考一下

前言

进行服务端开发,少不了对各种路径的处理,之前我们是简单粗暴的使用字符串的方法来对路径进行拼接或截取等操作。

Node.js 官方为我们提供了一个专门用来处理路径的模块:path模块,这个模块提供了一系列的方法和属性,用来满足用户对路径的处理需求。

路径拼接:join方法

path模块中有一个join方法,能够非常智能的进行路径拼接:

使用path.join()方法,可以把多个路径片段拼接为完整的路径字符串

const path = require("path");
// 拼接/a和/b
const pathStr = path.join("/a", "/b");
console.log(pathStr); // '\a\b'

join方法会识别当前操作系统,判断应当使用正斜杠(/)还是反斜杠(\

因为我使用的是Windows,所以生成的是“\a\b”(反斜杠),如果在Linux系统下则会生成“/a/b”(正斜杠),这就是join相比简单的字符串拼接'/a'+'/b')更智能的一点

我们在写路径时,习惯于使用正斜杠(/),但在Windows系统中文件路径默认使用的是反斜杠(\):

但我们在Windows系统中访问路径时,正反斜杠都可以正常访问

但Linux系统中文件路径只能使用正斜杠!!!

join方法另一个智能的地方在于:它会会识别并匹配相对路径的写法

const path = require("path");

// 注意:join方法会识别并匹配相对路径的写法
// 如下../c会替换掉/b(相当于找上一级的c而不是/b),所以最后拼接成的路径为\a\c
const pathStr1 = path.join("/a", "/b", "../c");
console.log(pathStr1); // '\a\c'

// const pathStr1 = path.join("/a", "/b", "../../c");
// console.log(pathStr1); // '\c'

// const pathStr1 = path.join("/a", "/b", "./c");
// console.log(pathStr1); // '\a\b\c'

// const pathStr1 = path.join("/a", "/b", "c/d");
// console.log(pathStr1); // '\a\b\c\d'

在一些目录结构复杂的项目,使用相对路径可能会不尽人意,所以我们也经常使用绝对路径来避免一些不必要的麻烦,但我们如何知道一个目录的绝对路径呢?

Node.js中有一个全局变量:__dirname,它代表了当前目录的绝对路径

通过绝对路径访问文件:

const path = require("path");
const fs = require("fs");

fs.readFile(path.join(__dirname, "/static/index.txt"), "utf-8", (err, data) => {
    if (err) {
        return console.log("读取文件出错!", err);
    }
    console.log("文件内容", data);
});

获取文件名:basename方法

使用path.basename()方法,可以从一个文件路径中,获取到文件的名称部分。

basename方法有两个参数:

  • 第一个参数必传,表示文件的路径第
  • 二个参数可选,表示文件的后缀名(也叫扩展名)

不传第二个参数可获取文件完整名(包含后缀):

const path = require("path");

// 一个用于测试的文件路径
const fpath = "./static/index.txt";

// 获取完整文件名(带扩展名)
const fullName1 = path.basename(path.join(__dirname, fpath));
console.log(fullName1); // index.txt

传第二个参数时,获取的是不含后缀的文件名:

const path = require("path");

// 一个用于测试的文件路径
const fpath = "./static/index.txt";

// 指定basename的第二个参数为文件的扩展名,来获取不带扩展名的文件名
const fullName2 = path.basename(fpath, ".txt");
console.log(fullName2); // index

注意:如果第二个参数填的后缀与文件实际后缀不符合,则获取到的依旧是文件的完整名(包含后缀)

const path = require("path");

// 一个用于测试的文件路径
const fpath = "./static/index.txt";

const fullName2 = path.basename(fpath, ".js");
console.log(fullName2); // index.txt

获取文件扩展名:extname方法

extname方法可用来获取文件的扩展名:

const path = require("path");

// 一个用于测试的文件路径
const fpath = "./static/index.txt";

// 获取文件扩展名
const fullName1 = path.extname(path.join(__dirname, fpath));
console.log(fullName1); // .txt

结语

这一节比较简单,主要介绍了path模块的几个常用方法,到此这篇关于Node.js 中常用内置模块(path 路径模块)的文章就介绍到这了,更多相关Node.js path 模块内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Node.js的基本应用你知道多少

    Node.js的基本应用你知道多少

    这篇文章主要为大家详细介绍了Node.js的基本应用,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-02-02
  • 学习Node.js模块机制

    学习Node.js模块机制

    这篇文章主要为大家详细介绍了Node.js模块机制,一篇关于Node.js模块机制的学习笔记,感兴趣的小伙伴们可以参考一下
    2016-10-10
  • 深入理解nodejs中Express的中间件

    深入理解nodejs中Express的中间件

    一个Express应用就是在调用各种中间件。可见中间件在web应用开发中的重要性,有兴趣的可以了解一下
    2017-05-05
  • 详解Node.js项目APM监控之New Relic

    详解Node.js项目APM监控之New Relic

    本篇文章主要介绍了Node.js项目APM监控之New Relic,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • NodeJS前端自动化部署实现实例详解

    NodeJS前端自动化部署实现实例详解

    这篇文章主要为大家介绍了NodeJS前端自动化部署实现实例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-10-10
  • 浅析Nodejs npm常用命令

    浅析Nodejs npm常用命令

    这篇文章主要介绍了浅析Nodejs npm常用命令的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-06-06
  • 使用node打造自己的命令行工具方法教程

    使用node打造自己的命令行工具方法教程

    这篇文章主要介绍了使用node打造自己的命令行工具方法教程,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03
  • 解决nodejs的npm命令无反应的问题

    解决nodejs的npm命令无反应的问题

    今天小编就为大家分享一篇解决nodejs的npm命令无反应的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05
  • 利用pm2部署多个node.js项目的配置教程

    利用pm2部署多个node.js项目的配置教程

    目前似乎最常见的线上部署nodejs项目的有forever,pm2这两种,而下面这篇文章主要给大家介绍了关于利用pm2部署多个node.js项目的配置教程,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-10-10
  • Node.js 实现抢票小工具 & 短信通知提醒功能

    Node.js 实现抢票小工具 & 短信通知提醒功能

    这篇文章主要介绍了Node.js 实现抢票小工具 & 短信通知提醒功能,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-10-10

最新评论