path解析:join和resolve

本文最后更新于:8 个月前

path.join和path.resolve最主要的作用是:自动识别操作系统的文件分割符,自适应项目所处的操作系统的变更(比如Windows的分隔符为’',Linux的分割符为’/‘)
常用示例:path.join(__dirname,’../a/b.js’)、path.resolve(‘a/b.js’)
path.resolve()返回项目的根目录

path解析:join和resolve

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
/**
* Q:为什么要用path.join或者path.resolve?它们的作用是什么?
* A:path.join和path.resolve最主要的作用是:
* 1.自动识别操作系统的文件分割符,自适应项目所处的操作系统的变更(Windows的分隔符为'\',Linux的分割符为'/')
* 2.动态获取项目的绝对路径,自适应项目目录的变更
*
* Q:它们之间的区别又是什么?
* A: 1.join只是简单地对参数进行拼接;resolve将以/开始的路径参数作为根目录
* 2.join只是拼接参数;resolve会添加一个当前工作目录的绝对路径
*
* join和resolve接受一串参数,表示要拼接的路径片段
* resolve()返回项目的根目录,不管是在哪一个子目录去调用resolve方法
* __dirname,返回的是当前module的目录,不一定是项目根目录,可能是项目中的子目录
*/

const path = require('path')

// resolve会自动添加当前目录的绝对路径作为前缀,而join只是拼接所有参数
console.log('1:',path.resolve('a','b')) //D:\timegogo\Projects\失物招领平台2.0\backend\a\b
console.log('2:',path.join('a','b')) //a\b


// path.join会自动将分割符转换为与系统相符
console.log('3:',path.join('a','/b')) //a\b
console.log('4:',path.join('/a','/b')) //\a\b
console.log('5:',path.join('/a/b/c','..','d')) //\a\b\d
console.log('6:',path.join('/a/b/c','..d','e')) //\a\b\c\..d\e


// resolve按照从右向左道顺序,寻找第一个`/`开头的根目录,作为路径起点
console.log('7:',path.resolve('a','b')) //D:\timegogo\Projects\失物招领平台2.0\backend\a\b
console.log('8:',path.resolve('/a','b')) //D:\a\b
console.log('9:',path.resolve('/a','/b')) //D:\b
console.log('10:',path.resolve('/a','/b','./c')) //D:\b\c

path解析:join和resolve
http://timegogo.top/2022/12/14/后端/node:path解析:join和resolve/
作者
丘智聪
发布于
2022年12月14日
更新于
2023年7月16日
许可协议