Node.js入门之path模块

简介: 前面我们介绍了什么是Node.js,今天我们主要再来说说path模块。path模块主要是对系统中路径的一些操作。比如常用的获取文件路径、文件名、文件扩展名等。

获取当前文件目录

console.log(__dirname); // D:\myworkspace\base-learn\node

获取当前文件完整路径

console.log(__filename); // D:\myworkspace\base-learn\node\path.js

获取指定文件或文件夹路径

console.log(path.dirname("D:/myworkspace/base-learn/node/path.js")); // D:/myworkspace/base-learn/node
console.log(path.dirname("D:/myworkspace/base-learn/node")); // D:/myworkspace/base-learn

获取指定文件或文件夹名

console.log(path.basename("D:/myworkspace/base-learn/node/path.js")); // path.js
console.log(path.basename("/tmp/demo/js/test/")); // 输出:test
console.log(path.basename("/tmp/demo/js/test")); // 输出:test

如果只想获取文件名,但不包括文件扩展呢?可以用上第二个参数。

console.log(path.basename("/tmp/demo/js/test.js", ".js")); // 输出:test

获取指定文件扩展名

console.log(path.extname("D:/myworkspace/base-learn/node/path.js")); // .js
// 获取扩展名的时候需要注意下面的特殊情况
console.log(path.extname("index.html")); // returns '.html'
console.log(path.extname("index.coffee.md")); // returns '.md'
console.log(path.extname("index.")); // returns '.'
console.log(path.extname("index")); // returns ''
console.log(path.extname(".index")); // returns ''

获取当前系统的分隔符

console.log(path.sep); // 当前是windows系统,返回的是\。如果是linux上是/

根据当前系统格式化路径

这里我们使用的是windows电脑,所以会将系统分隔符换成\

console.log(path.normalize("D:/myworkspace/base-learn/node/path.js")); // D:\myworkspace\base-learn\node\path.js

路径连接

path.join

从前往后将多个路径组合成一个路径,.表示当前目录,..表示返回上层目录

console.log(path.join("/foo", "bar", "baz/asdf", "quux", "..")); // \foo\bar\baz\asdf
console.log(path.join("/foo", "bar", "baz/asdf", "quux", "..", "..")); // \foo\bar\baz
console.log(path.join("/foo", "bar", "baz/asdf", "/quux")); // \foo\bar\baz\asdf\quux
console.log(path.join("/foo", "bar", "baz/asdf/", "/quux")); // \foo\bar\baz\asdf\quux
console.log(path.join("/foo", "bar", "baz/asdf", "quux", ".")); // \foo\bar\baz\asdf\quux

path.resolve

从后往前组合,组合成一个绝对路径就停止。若直到要第一个参数都组合不出来绝对路径,那么就会连接上当前文件所在绝对路径,组合成一个完整的绝对路径。

console.log(path.resolve("/www", "/res", "index.php")); // D:\res\index.php
console.log(path.resolve("/www", "res", "index.php")); // D:\www\res\index.php
console.log(path.resolve("www", "res", "index.php")); // D:\myworkspace\base-learn\node\www\res\index.php

判断是不是绝对路径

是绝对路径返回true,不是返回false

console.log(path.isAbsolute("/myworkspace/base-learn/node/path.js")); // true
console.log(path.isAbsolute("myworkspace/base-learn/node/path.js")); // false

获取相对路径

返回第二个参数相对于第一个参数的所在路径。

console.log(path.relative("c:/a/b/c", "c:/houdunren/her")); // ..\..\..\houdunren\her

路径格式化

path.format(pathObject)

pathObjectroot、dir、base、name、ext属性,按照一定的规则,组合成一个文件路径。

root 和 dir:两者可以互相替换,区别在于,路径拼接时,root后不会自动加/,而dir会。base 和 name+ext:两者可以互相替换。

console.log(
  path.format({
    dir: "a/b/c",
    name: "path.js",
  })
); // a/b/c\path.js

path.parse(filepath)

其实就是上面方法的逆向操作。将路径字符串转成路径对象。

console.log(path.parse("a/b/c/path.js")); // { root: '', dir: 'a/b/c', base: 'path.js', ext: '.js', name: 'path' }

系列文章

Node.js入门之什么是Node.js

Node.js入门之path模块

Node.js入门之fs模块

Node.js入门之url模块和querystring模块

Node.js入门之http模块和dns模块

Node.js入门之process模块、child_process模块、cluster模块

听说你还不会使用Express?

听说你还不会使用Koa?

后记

感谢小伙伴们的耐心观看,本文为笔者个人学习笔记,如有谬误,还请告知,万分感谢!如果本文对你有所帮助,还请点个关注点个赞~,您的支持是笔者不断更新的动力!

相关文章
|
1天前
|
JavaScript 前端开发 小程序
一小时入门Vue.js前端开发
本文是作者关于Vue.js前端开发的快速入门教程,包括结果展示、参考链接、注意事项以及常见问题的解决方法。文章提供了Vue.js的基础使用介绍,如何安装和使用cnpm,以及如何解决命令行中遇到的一些常见问题。
一小时入门Vue.js前端开发
|
6天前
|
JavaScript 前端开发
Vue、ElementUI配合Node、multiparty模块实现图片上传并反显_小demo
如何使用Vue和Element UI配合Node.js及multiparty模块实现图片上传并反显的功能,包括前端的Element UI组件配置和后端的Node.js服务端代码实现。
13 1
Vue、ElementUI配合Node、multiparty模块实现图片上传并反显_小demo
|
2月前
|
JavaScript 数据可视化
JS如何优雅的实现模块自动滚动展示
【8月更文挑战第22天】JS如何优雅的实现模块自动滚动展示
19 1
JS如何优雅的实现模块自动滚动展示
|
21天前
Nest.js 实战 (十二):优雅地使用事件发布/订阅模块 Event Emitter
这篇文章介绍了在Nest.js构建应用时,如何通过事件/发布-订阅模式使应用程序更健壮、灵活、易于扩展,并简化服务间通信。文章主要围绕@nestjs/event-emitter模块展开,这是一个基于eventemitter2库的社区模块,提供了事件发布/订阅功能,使得实现事件驱动架构变得简单。文章还介绍了如何使用该模块,包括安装依赖、初始化模块、注册EventEmitterModule、使用装饰器简化监听等。最后总结,集成@nestjs/event-emitter模块可以提升应用程序的事件驱动能力,构建出更为松耦合、易扩展且高度灵活的系统架构,是构建现代、响应迅速且具有高度解耦特性的Nest.
|
27天前
|
缓存 JavaScript 前端开发
JavaScript模块化开发:ES6模块与CommonJs的对比与应用
JavaScript模块化开发:ES6模块与CommonJs的对比与应用
20 2
|
2月前
|
算法 JavaScript 前端开发
国标非对称加密:RSA算法、非对称特征、js还原、jsencrypt和rsa模块解析
国标非对称加密:RSA算法、非对称特征、js还原、jsencrypt和rsa模块解析
128 1
|
2月前
[译] Node 模块中的 peer dependencies 是什么?
[译] Node 模块中的 peer dependencies 是什么?
|
2月前
|
JSON JavaScript 前端开发
Ctfshow web入门 nodejs篇 web334-web344
Ctfshow web入门 nodejs篇 web334-web344
31 0
|
2月前
|
存储 JavaScript 前端开发
nodejs os模块
nodejs os模块
29 0
|
Web App开发 JavaScript Unix
下一篇
无影云桌面