小tips:path的join和resolve的使用区别
2024-09-28 07:18:57
1.连接路径:path.join([path1][, path2][, ...])
path.join()方法可以连接任意多个路径字符串。要连接的多个路径可做为参数传入。
path.join()方法在接边路径的同时也会对路径进行规范化。例如:
var path = require('path');
//合法的字符串连接
path.join('/foo', 'bar', 'baz/asdf', 'quux', '..')
// 连接后
'/foo/bar/baz/asdf' //不合法的字符串将抛出异常
path.join('foo', {}, 'bar')
// 抛出的异常 TypeError: Arguments to path.join must be strings'
2.路径解析:path.resolve([from ...], to)
path.resolve()方法可以将多个路径解析为一个规范化的绝对路径。其处理方式类似于对这些路径逐一进行cd操作,与cd操作不同的是,这引起路径可以是文件,并且可不必实际存在(resolve()方法不会利用底层的文件系统判断路径是否存在,而只是进行路径字符串操作)。例如:
path.resolve('foo/bar', '/tmp/file/', '..', 'a/../subfile')
相当于
cd foo/bar
cd /tmp/file/
cd ..
cd a/../subfile
pwd
例子:
path.resolve('/foo/bar', './baz')
// 输出结果为
'/foo/bar/baz'
path.resolve('/foo/bar', '/tmp/file/')
// 输出结果为
'/tmp/file' path.resolve('wwwroot', 'static_files/png/', '../gif/image.gif')
// 当前的工作路径是 /home/itbilu/node,则输出结果为
'/home/itbilu/node/wwwroot/static_files/gif/image.gif'
3.对比
const path = require('path');
let myPath = path.join(__dirname,'/img/so');
let myPath2 = path.join(__dirname,'./img/so');
let myPath3 = path.resolve(__dirname,'/img/so');
let myPath4 = path.resolve(__dirname,'./img/so');
console.log(__dirname); //D:\myProgram\test
console.log(myPath); //D:\myProgram\test\img\so
console.log(myPath2); //D:\myProgram\test\img\so
console.log(myPath3); //D:\img\so<br>
console.log(myPath4); //D:\myProgram\test\img\so
最新文章
- 《深入理解Java内存模型》读书总结
- try catch里面try catch嵌套
- MacOS下Python的多版本管理(pyenv)
- Emacs 之查看帮助
- 总结七条助你成为Linux高手的超棒忠告
- redis API使用说明
- python中列表和字典常用方法和函数
- Maven学习小结(七 生命周期[转])
- URL编码 URLEncoder 示例
- Java处理java.util.ConcurrentModificationException异常
- js局部变量,参数
- vxWorks应用程序加载的另一种办法
- Nginx 如何增大nginx使用cpu有效时长
- Web API的参数、多版本和Filter
- java 使用反射在dto和entity 实体类之间进行转换
- background-size 导致的背景不居中问题
- SharePoint Word Service-PowerShell
- SELENIUM如何调用FIREFOX时加载插件
- Flutter - Error: &#39;xxx&#39; is imported from both package...
- BZOJ 4521 CQOI 2016 手机号码 数位DP
热门文章
- AIO系列文档(1)----图解ByteBuffer
- 深入理解Spring Redis的使用 (九)、通过Redis 实现 分布式锁 的 BUG,以及和数据库加锁的性能测试
- 写给大忙人的centos下ftp服务器搭建(以及启动失败/XFTP客户端一直提示“用户身份验证失败”解决方法)
- [Swift]LeetCode806. 写字符串需要的行数 | Number of Lines To Write String
- [Swift]LeetCode810. 黑板异或游戏 | Chalkboard XOR Game
- Npoi简单读写Excel
- Saiku设置展示table数据不隐藏空的行数据信息(二十六)
- 使用SDL2显示一张图片,SDL2上手贴
- Error: Default interface methods are only supported starting with Android N (--min-api 24): java.io.InputStream org.apache.poi.sl.usermodel.ObjectShape.readObjectData()
- 重写equals的详细说明