详解nodeJS里的path.join 和 path.resolve方法

简介: 详解nodeJS里的path.join 和 path.resolve方法

path.join 定义

path.join([path1][, path2][, ...])

用于连接路径。会把全部给定的 path 片段连接到一起,并规范化生成的路径。

path.join('/foo', 'bar', './baz');
// '/foo/bar/baz'
path.join('/foo', 'bar', '/baz', '..');
// '/foo/bar'

要点:如果连接后的路径字符串是一个长度为零的字符串,则返回 '.',表示当前工作目录。

如果我当前工作目录是 E:\nodejs
path.join('');
// 'E:\nodejs'

path.resolve定义

path.resolve() 方法将路径或路径片段的序列解析为绝对路径

它可以接受多个参数,依次表示所要进入的路径,直到将最后一个参数转为绝对路径。如果根据参数无法得到绝对路径,就以当前所在路径作为基准。除了根目录,该方法的返回值都不带尾部的斜杠。

是不是觉得很难理解?官方大白话都是如此。最好结合代码理解,如下代码:

1.console.log(path.resolve());  //E:\nodejs
2.console.log(path.resolve(''));  //E:\nodejs
3.console.log(path.resolve('.'));  //E:\nodejs
4.console.log(path.resolve(__dirname));  //E:\nodejs
5.console.log(path.resolve('js/common','test'));  //E:\nodejs\js\common\test
6.console.log(path.resolve('./js/common','test'));  //E:\nodejs\js\common\test
7.console.log(path.resolve('js/common','./test'));  //E:\nodejs\js\common\test
8.console.log(path.resolve('./js/common','./test'));  //E:\nodejs\js\common\test
9.console.log(path.resolve('/js/common','test'));  //E:\js\common\test
10.console.log(path.resolve('js/common','/test'));  //E:\test
11.console.log(path.resolve('/js/common','/test'));  //E:\test
12.console.log(path.resolve('/js/common','../test'));  //E:\js\test
13.console.log(path.resolve('js/common','../test'));  //E:\nodejs\js\test

上面代码的已知条件:我当前工作目录是 E:\nodejs

理解要点:

1、从右往左依次解析(很重要,很重要,很重要!!!

2、代码里序号1-4的几种写法会返回当前工作目录。

3、代码里序号5-8中,’test’ 等价于 ‘./test’ :是相对路径,假如相对路径片段在最右侧,则需要向前拼接,

直到遇到以斜杠(/)开头的参数结束,假如直到解析到第一个参数仍然没有遇到以斜杠开头的,则直接拼接到你当前工作目录(也就是 E:\nodejs)。

4、 代码里序号10-11说明的是参数从右至左,遇到第一个以斜杠开头的参数停止解析,无论前面是否还有参数。

5、 ‘../test’ 解析之后就是test的上一级。如代码里序号12,前面是'/js/common',带有'/',所以会以'E:\js\common'作为根目录去拼接'../test',即为'E:\js\test'。

6、代码里序号13跟12之所以不同是因为序号13里的‘js/common’不带‘/’。


相关文章
|
资源调度 JavaScript
nodeJS 的 npm 设置国内高速镜像之淘宝镜像的方法
nodeJS 的 npm 设置国内高速镜像之淘宝镜像的方法
8152 2
|
JavaScript Windows
Win7内网安装高版本的Node方法,亲测有效node-v16.16.0
Win7内网安装高版本的Node方法,亲测有效node-v16.16.0
1986 1
|
5月前
|
监控 负载均衡 JavaScript
有哪些有效的方法可以优化Node.js应用的性能?
有哪些有效的方法可以优化Node.js应用的性能?
299 69
|
4月前
|
JavaScript Linux 内存技术
Debian 11系统下Node.js版本更新方法详解
本指南详细介绍在Linux系统中安装和管理Node.js的步骤。首先检查现有环境,包括查看当前版本和清除旧版本;接着通过NodeSource仓库安装最新版Node.js并验证安装结果。推荐使用nvm(Node Version Manager)进行多版本管理,便于切换和设置默认版本。同时,提供常见问题解决方法,如权限错误处理和全局模块迁移方案,以及版本回滚操作,确保用户能够灵活应对不同需求。
326 0
|
4月前
|
JavaScript Linux 内存技术
Debian 11系统下Node.js版本更新方法
Debian 11更新Node.js主要就是这三种方式,无论你是初涉其中的新手还是找寻挑战的专家,总有一种方式能满足你的需求。现在,你已经是这个
342 80
|
Kubernetes Ubuntu Windows
【Azure K8S | AKS】分享从AKS集群的Node中查看日志的方法(/var/log)
【Azure K8S | AKS】分享从AKS集群的Node中查看日志的方法(/var/log)
285 3
|
11月前
|
监控 JavaScript Java
Node.js中内存泄漏的检测方法
检测内存泄漏需要综合运用多种方法,并结合实际的应用场景和代码特点进行分析。及时发现和解决内存泄漏问题,可以提高应用的稳定性和性能,避免潜在的风险和故障。同时,不断学习和掌握内存管理的知识,也是有效预防内存泄漏的重要途径。
651 62
|
11月前
|
存储 JavaScript 搜索推荐
Node框架的安装和配置方法
安装 Node 框架是进行 Node 开发的第一步,通过正确的安装和配置,可以为后续的开发工作提供良好的基础。在安装过程中,需要仔细阅读相关文档和提示,遇到问题及时解决,以确保安装顺利完成。
585 58
|
JavaScript Linux
2022年超详细在CentOS 7上安装Node.js方法(源码安装)
这篇文章介绍了在CentOS 7系统上通过源码安装Node.js的详细步骤,包括从官网下载Node.js源码包、将安装包上传至虚拟机、解压安装包、删除压缩文件、编译安装Node.js、检查Node.js和npm版本,以及切换npm源到淘宝镜像以加速下载。此外,还提供了一个获取Linux下Node.js离线安装包的微信公众号搜索方式。