前言:要搞清楚path.join()和path.resolve的具体作用,最好自己搞个文件,用node跑一遍去测试一下。只有自己亲自动手实践了,才知道具体是怎么回事,才能真正的理解

一、path.join()

使用平台特定的分隔符(unix系统是 ,windows系统是 \ )把全部给定的path片段连接到一起,并规范化生成的路径。若任意一个路径片段类型错误,会报错。

__dirname
// __dirname返回当前文件所在的绝对路径
const path = require('path'); const path1 = path.join(__dirname, '/foo');
const path2 = path.join(__dirname, './foo/bar');
const path3 = path.join('/foo', 'bar', '/baz/apple', 'aaa', '..');
const path4 = path.join('foo', 'bar', 'baz');
const path5 = path.join(__dirname,'../public') //Users/xiao/work/public join碰到../也会跳出 console.log(path1);
console.log(path2);
console.log(path3);
console.log(path4); // 输出结果
/Users/xiao/work/test/foo
/Users/xiao/work/test/foo/bar
/foo/bar/baz/apple
foo/bar/baz

二、path.resolve 

path.resolve方法是把一个路径或路径片段的序列解析为一个绝对路径。例如

const path = require('path');

const path1 = path.resolve('/a/b', '/c/d');
// 结果: /c/d
const path2 = path.resolve('/a/b', 'c/d');
// 输出: /a/b/c/d
const path3 = path.resolve('/a/b', '../c/d');
// 输出: /a/c/d
const path4 = path.resolve('a', 'b');
// 输出: /Users/xiao/work/test/a/b

resolve把 ' / ' 当成根目录,path.resolve()方法可以将多个路径解析为一个规范化的绝对路径。其处理方式类似于对这些路径逐一进行cd操作。

path.resolve('www', 'static', '../public', 'src', '..');
// cd www /Users/xiao/work/test/www
// cd static /Users/xiao/work/test/www/static
// cd ../public /Users/xiao/work/test/www/public 碰到../会跳出
// cd src /Users/xiao/work/test/www/public/src
// cd .. /Users/xiao/work/test/www/public .. 的意思似乎是取消

三、区别

1、join是把各个path片段连接在一起,resolve把' / ' 当成根目录

path.join('/a', '/b');
// /a/b
path.resolve('/a', '/b');
// /b

2.resolve在传入非 / 路径时,会自动加上当前目录形成一个绝对路径,而join仅仅用于路径拼接

// 当前路径为
/Users/xiao/work/test
path.join('a', 'b', '..', 'd');
// a/d
path.resolve('a', 'b', '..', 'd');
// /Users/xiao/work/test/a/d

可以看出resolve在传入的第一个参数为非根路径时,会返回一个带当前目录的绝对路径。

__dirname 表示当前文件所在的目录的绝对路径

process.cwd()  返回运行当前脚本的工作目录的路径

参考:path.join()和path.resolve()的区别

node中__dirname、__filename、process.cwd()、process.chdir()表示的路径

path.resolve和path.resolve的用法的更多相关文章

  1. Mac配置Qt环境——Could not resolve SDK path for 'macosx10.8'

    前言:解决在Mac端安装Qt后,出现的Could not resolve SDK path for 'macosx10.8'的配置信息. 首先,发现问题之前,先搜索一下.但是搜索的结果都是说,找到配置 ...

  2. 小tips:path的join和resolve的使用区别

    1.连接路径:path.join([path1][, path2][, ...]) path.join()方法可以连接任意多个路径字符串.要连接的多个路径可做为参数传入. path.join()方法在 ...

  3. node模块之path——path.join和path.resolve的区别

    1.path.join([...paths]) path.join() 方法使用平台特定的分隔符把全部给定的 path 片段连接到一起,并规范化生成的路径. 长度为零的 path 片段会被忽略. 如果 ...

  4. path的join和resolve的使用区别

    文章目录   1.连接路径:path.join([path1][, path2][, ...]) 2.路径解析:path.resolve([from ...], to) 3.对比 1.连接路径:pat ...

  5. path的join和resolve

    连接路径:path.join([path1][, path2][, ...]) path.join()方法可以连接任意多个路径字符串.要连接的多个路径可做为参数传入. path.join()方法在接边 ...

  6. path.join()与path.resolve()区别

    1.path.resolve([...paths]) path.resolve() 方法会把一个路径或路径片段的序列解析为一个绝对路径. 给定的路径的序列是从右往左被处理的,后面每个 path 被依次 ...

  7. Nodejs中,path.join()和path.resolve()的区别

    在说path.join()和path.resolve()的区别之前,我先说下文件路径/和./和../之间的区别 /代表的是根目录: ./代表的是当前目录: ../代表的是父级目录. 然后再来说下pat ...

  8. path.resolve和path.join的区别

    // test.js const path = require('path') let x1 = path.resolve('/目录1/目录2', '/目录3/目录4/') let x2 = path ...

  9. sys.path.insert(0,"/path") 的用法

    可以选择用sys.path.insert(0,‘/path’),这样新添加的目录会优先于其他目录被import检查

  10. sys.path和os.path

    sys.path和os.path1.sys.path是python搜索模块的路径集合,是个list:os.path是os的一个模块,是操作文件和目录的模块 2.sys.path和PYTHONPATH首 ...

随机推荐

  1. 【ASP.NET Core】标记帮助器——元素筛选

    前一篇中老周从标记帮助的底层介绍关键性的接口,如 ITagHelper ,它是一个标志,用于识别哪些类属于 Tag Helper. 标记帮助器毕竟是针对 HTML 标记的,所以得筛选.说白了就是我写的 ...

  2. JZOJ 5460. 士兵训练

    题目 \(1\le n,q \le 2\cdot {10}^5,0\le b_i,l_i \le {10}^9,b_i \ge 1,1 \le S_i \le n\) \(Solution\) 这题很 ...

  3. JZOJ 6800.NOIP2020.9.19模拟spongebob

    题目大意 求形如 \[\sum_{i=1}^n |a_ix + b_i| \] 的最小值 思路 我们显然可以先把系数 \(a\) 提出来 于是就成了 \(\sum_{i=1}^n |a_i|·|x + ...

  4. GIT初学者详细指令学习

    参考网站:https://www.liaoxuefeng.com/wiki/896043488029600 基础概念 1.自定义名字和邮箱号 git config --global user.name ...

  5. B树,B-树,B+树和B*树

    B树和B-树(平衡多路查找树)规则:1.排序方法:所有结点关键字按递增次序,并遵循左小右大的原则.2.子结点数:非叶子结点的子结点数>1且<=M且M>=2,空树除外(M阶代表一个树的 ...

  6. Day 23 23.1:js加密算法

    js加密算法 逆向重点掌握的内容: 1.逆向的思维 2.网站逆向的分析思路和步骤 注意:重点不是放在代码中,而是分析的思路和套路(技巧) 逆向到底是什么? 通俗来讲,逆向就是处理爬虫过程中对于加密数据 ...

  7. 自己使用Git规范流程-记录

    配置目录 建立仓库 1.点击"New project" 2.点击"Create blank project" 3.输入仓库名称,点击创建 4.仓库创建完成,个人 ...

  8. C++ STL中的二分法

    二分法介绍 狭义的二分法是一种在有序的数组中查找是否存在某个值的算法.广义的二分法不一定需要显式的数组,只需要有序的解空间即可.(此处解空间借用线性代数的称谓,仅表示所有合法解的集合,与线性代数无关) ...

  9. python获取当前季度或上一季度的起止日期

    import datetime import calendar def get_quarter_date(quarter='current'): """ 获取当前季度或上 ...

  10. System.IO.FileNotFoundException: Could not load file or assembly 'System.IO.Compression.FileSystem系统找不到指定的文件

    错误:System.IO.FileNotFoundException: Could not load file or assembly 'System.IO.Compression.FileSyste ...