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

目录
  • 前言
  • 路径拼接:join方法
  • 获取文件名:basename方法
  • 获取文件扩展名:extname方法
  • 结语

前言

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

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 模块内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • node.js中path路径模块的使用方法实例分析

    本文实例讲述了node.js中path路径模块的使用方法.分享给大家供大家参考,具体如下: path模块是node.js中处理路径的核心模块.可以很方便的处理关于文件路径的问题. join() 将多个参数值合并成一个路径 const path = require('path'); console.log(path.join('./a', 'b', 'c')); basename() 获取路径中的文件名 const path = require('path'); //获取文件名,包含扩展名 con

  • typescript在node.js下使用别名(paths)无效的问题详解

    目录 背景 typescript不会对别名进行处理 另一个坑 调试tsconfig-paths 总结 背景 纯nodejs环境,直接使用tsc编译nodejs.源码目录是src,编译输出目录为bin.代码结构如下: src utils a.ts b.ts config … bin tsconfig.json 在其他深层次目录引用utils或者config下的文件时,总是要写一长串的'../../../../',还需要数数.这显然是不能接受的.用过webpack开发的小伙伴们,想想别名功能,typ

  • node.js中的fs.realpathSync方法使用说明

    方法说明: 同步版的 fs.realpath(). 语法: 复制代码 代码如下: fs.realpathSync(path, [cache]) 由于该方法属于fs模块,使用前需要引入fs模块(var fs= require("fs") ) 接收参数: path                             路径 cache                           可选,一个文字的映射路径可用于强制一个特定的路径解决或避免额外的fs.stat需要知道真正的路径对象.

  • 详解Node.js中path模块的resolve()和join()方法的区别

    关于Node.js中path模块的resolve()和join()方法的比较,对照着总结看例子差不多以后在写模块的时候思路就能很清晰了 resolve 作用:path.resolve() 该方法将一些的 路径/路径段 解析为绝对路径. 语法:path.resolve([...paths]) 说明: ...paths <string> 一个路径或路径片段的序列 如果没有传入 path 片段,或者path 片段长度为零(空字符),则 path.resolve() 会返回当前工作目录的绝对路径(相当

  • node.js中的path.basename方法使用说明

    方法说明: 提取出用 '/' 隔开的path的最后一部分.(8详见例子) 语法: 复制代码 代码如下: path.basename(p, [ext]) 由于该方法属于path模块,使用前需要引入path模块(var path= require("path") ) 接收参数: p                    要处理的path ext                 要过滤的字符 例子: 复制代码 代码如下: var path= require("path")

  • node.js中的fs.realpath方法使用说明

    方法说明: 获取真实路径. 可以使用process.cwd解决相对路径. 语法: 复制代码 代码如下: fs.realpath(path, [cache], [callback(err , resolvedPath)]) 由于该方法属于fs模块,使用前需要引入fs模块(var fs= require("fs") ) 接收参数: path                             路径 cache                           可选,一个文字的映射路径

  • Node.js path模块,获取文件后缀名操作

    我就废话不多说了,大家还是直接看代码吧~ demo.js: //path模块 var path=require('path'); /*nodejs自带的模块*/ var extname=path.extname("123.html"); //获取文件的后缀名 console.log(extname); 补充知识:node 的path模块中 path.resolve()和path.join()的区别 一.path模块的引入. 直接引用.node中自带的模块 const path = re

  • Node.js中路径处理模块path详解

    前言 在node.js中,提供了一个path某块,在这个模块中,提供了许多使用的,可被用来处理与转换路径的方法与属性,将path的接口按照用途归类,仔细琢磨琢磨,也就没那么费解了.下面我们就来详细介绍下关于Node.js中的路径处理模块path. 获取路径/文件名/扩展名 获取路径:path.dirname(filepath) 获取文件名:path.basename(filepath) 获取扩展名:path.extname(filepath) 获取所在路径 例子如下: var path = re

  • node.js中的path.dirname方法使用说明

    方法说明: 返回path的目录.类似于UNIX目录命令. 语法: 复制代码 代码如下: path.dirname(p) 由于该方法属于path模块,使用前需要引入path模块(var path= require("path") ) 接收参数: p        path地址 例子: 复制代码 代码如下: var path= require("path"); path.dirname('/foo/bar/baz/asdf/quux') // returns '/foo

  • node.JS路径解析之PATH模块使用方法详解

    路径组成 path.dirname(p) 返回路径p所在的目录 var path = require('path'); console.log(path.dirname('/foo/bar/baz/asdf/a.txt')); // /foo/bar/baz/asdf console.log(path.dirname('/foo/bar/baz/asdf/')); // /foo/bar/baz console.log(path.dirname('C:/test/aaa')); // C:/te

随机推荐