path.resolve和path.resolve的用法
前言:要搞清楚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的用法的更多相关文章
- Mac配置Qt环境——Could not resolve SDK path for 'macosx10.8'
前言:解决在Mac端安装Qt后,出现的Could not resolve SDK path for 'macosx10.8'的配置信息. 首先,发现问题之前,先搜索一下.但是搜索的结果都是说,找到配置 ...
- 小tips:path的join和resolve的使用区别
1.连接路径:path.join([path1][, path2][, ...]) path.join()方法可以连接任意多个路径字符串.要连接的多个路径可做为参数传入. path.join()方法在 ...
- node模块之path——path.join和path.resolve的区别
1.path.join([...paths]) path.join() 方法使用平台特定的分隔符把全部给定的 path 片段连接到一起,并规范化生成的路径. 长度为零的 path 片段会被忽略. 如果 ...
- path的join和resolve的使用区别
文章目录 1.连接路径:path.join([path1][, path2][, ...]) 2.路径解析:path.resolve([from ...], to) 3.对比 1.连接路径:pat ...
- path的join和resolve
连接路径:path.join([path1][, path2][, ...]) path.join()方法可以连接任意多个路径字符串.要连接的多个路径可做为参数传入. path.join()方法在接边 ...
- path.join()与path.resolve()区别
1.path.resolve([...paths]) path.resolve() 方法会把一个路径或路径片段的序列解析为一个绝对路径. 给定的路径的序列是从右往左被处理的,后面每个 path 被依次 ...
- Nodejs中,path.join()和path.resolve()的区别
在说path.join()和path.resolve()的区别之前,我先说下文件路径/和./和../之间的区别 /代表的是根目录: ./代表的是当前目录: ../代表的是父级目录. 然后再来说下pat ...
- path.resolve和path.join的区别
// test.js const path = require('path') let x1 = path.resolve('/目录1/目录2', '/目录3/目录4/') let x2 = path ...
- sys.path.insert(0,"/path") 的用法
可以选择用sys.path.insert(0,‘/path’),这样新添加的目录会优先于其他目录被import检查
- sys.path和os.path
sys.path和os.path1.sys.path是python搜索模块的路径集合,是个list:os.path是os的一个模块,是操作文件和目录的模块 2.sys.path和PYTHONPATH首 ...
随机推荐
- 关于联想对Jim博士的质疑
对Jim博士质疑的质疑 因为关注司马南,从他的空间里看到Jim博士和其龃龉,大致看了Jim博士头条里的文章,因为看到自己常用的EPICS,上午匆忙就写了上面的文. Jim博士是去年在头条上看到的,因为 ...
- 挖矿僵尸网络蠕虫病毒kdevtmpfsi处理过程
背景: pgsql连接时候报错org.postgresql.util.PSQLException: FATAL: sorry, too many clients already, 意思是client已 ...
- .bash_profile等配置文件
brew环境 mysql:数据库,装数据用. redis:缓存用. unrar:解压用. docker:虚拟环境用. node:某些项目依赖这个. python环境 command line tool ...
- 题解 [AHOI2009]同类分布
不理解之前为什么不会哈哈哈哈哈哈哈哈. 我是个天才(喜 显然记录 \(f_{i, t, r, s, limit, lead}\),\(i, limit, lead\) 是数位 dp 的套路,\(t\) ...
- 图文指南 篇二:虚拟机ESXi6.7安装黑群晖教程
转载:什么值得买 (ESXI虚拟机是非常好用的多开虚拟机是VM系列非常强的) https://post.smzdm.com/p/agd8l34w/#:~:text=7%E5%AE%89%E8%A3%8 ...
- let 和 var 的区别
var 关键字 在块级作用域中使用var声明变量,外面同级的块级作用域也可以访问.if.switch.for 等语句的作用域都没有块级作用域,所以说,在这些语句中声明的变量都能被外界访问,这是非常不安 ...
- 通过手动创建hibernate工厂,自动生成表,完成数据库备份还原功能
最近做toB.toG业务,普遍要去适配各种国产数据库,所以不得不用hibernate,过去这么多年一直都是用mybatis+mysql,现在重拾hibernate,专注跨数据库,感兴趣的加关注. 需求 ...
- [引擎开发] 深入GPU和渲染优化(基础篇)
https://blog.csdn.net/ZJU_fish1996/article/details/109269448
- 第三章-标准SQL语句
3.1 SQL概述: SQL:结构化查询语言,是关系数据库的标准语言,SQL是一个通用的.功能极强的关系数据库语言 结构化查询:理解:就是只要告诉数据库我要干什么,怎么干就可以了 3.1.2 SQL的 ...
- react 05 router
安装 npm i react-router-dom -- save<Router basename="/admin"> <Route path="/&q ...