path.resolve()理解

学习webpack时遇到path.resolve():

webpack.config.js:
output: {
        filename: '[name].bundle.js',

        //把一个路径或路径片段的序列解析为一个绝对路径
        path: path.resolve(__dirname,'dist')
    }
然后去看了node.js文档发现还是不理解,它的解释是:

path.resolve() 方法会把一个路径或路径片段的序列解析为一个绝对路径。
给定的路径的序列是从右往左被处理的,后面每个 path 被依次解析,直到构造完成一个绝对路径。 例如,给定的路径片段的序列为:/foo、/bar、baz,则调用 path.resolve('/foo', '/bar', 'baz') 会返回 /bar/baz。

给的例子有:

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/myself/node,
// 则返回 '/home/myself/node/wwwroot/static_files/gif/image.gif'

我的理解是像拼接字符串一样从右到左将参数拼成一个绝对路径,但是给出的每一个例子都完全不符合这个理解,然后看了一篇path的join和resolve的使用区别后的理解可以解释这些例子:

path.resolve([…paths])里的每个参数都类似在当前目录执行一个cd操作,从左到右执行,返回的是最后的当前目录,

这样理解才和文档中的例子对上号,例如:
path.resolve('/foo/bar','./baz');相当于:

cd /foo/bar //此时当前路径为 /foo/bar
cd ./baz //此时路径为 /foo/bar/baz

path.resolve('/foo/bar', '/tmp/file/');相当于:

cd /foo/bar //此时路径为 /foo/bar
cd /tmp/file/ //此时路径为 /tmp/file

path.resolve('wwwroot', 'static_files/png/', '../gif/image.gif');// 如果当前工作目录为 /home/myself/node,相当于:

cd wwwroot //此时路径为/home/myself/node/wwwroot
cd static_files/png/ //此时路径为/home/myself/node/wwwroot/static_files/png/
cd ../gif/image.gif //这里用cd描述其实是不对的。。。。此时路径为/home/myself/node/wwwroot/static_files/gif/image.gif

这样就可以解释文档里的例子,但是也不确定到底对不对。

参考:小tips:path的join和resolve的使用区别
https://www.cnblogs.com/moqiutao/p/8523955.html
————————————————
版权声明:本文为CSDN博主「kikyou`」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/kikyou_csdn/article/details/83150538

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果你想先定义一个Promise对象,然后在后面的代码返回该对象,你可以这样编写代码: ```javascript import axios from 'axios'; const d3 = require('d3-dsv'); export function funcGetSevrverCsv() { let path = '/data/csvdoge-usdt.csv'; const promise = new Promise((resolve, reject) => { axios.get(path) .then((resp) => { const newData = d3.csvParse(resp.data); // 在这里处理CSV数据 resolve(newData); // 解析Promise并将处理后的数据作为参数传递给resolve方法 }) .catch((error) => { // 处理错误 console.error(error); reject(error); // 拒绝Promise并将错误信息作为参数传递给reject方法 }); }); return promise; // 返回Promise对象 } ``` 在上面的代码,我们先创建了一个名为`promise`的新Promise对象,并将其赋值给变量。然后,在Promise的构造函数编写异步操作的代码。最后,我们将这个Promise对象`promise`作为函数的返回值。 这样,当你调用`funcGetSevrverCsv`函数时,它将返回一个Promise对象,你可以使用`.then`和`.catch`方法来处理Promise的解析和拒绝。 ```javascript funcGetSevrverCsv() .then((data) => { // 处理解析后的CSV数据 console.log(data); }) .catch((error) => { // 处理错误 console.error(error); }); ``` 请注意,这里的代码只是将Promise对象存储在变量,并在后面返回该变量。这与之前的代码没有本质区别,只是给了这个Promise对象一个名字,以便更好地理解代码的逻辑。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值