Node.js中几种文件路径的解析

Node 中的文件路径大概有 __dirname,__filename, process.cwd(), ./ 或者 ../,前三个都是绝对路径,为了便于比较,./ 和 ../ 我们通过 path.resolve('./')来转换为绝对路径,path.join()也可以转换为绝对路径。


path.resolve():返回一个绝对路径(不包括文件名),从右向左拼接字符串,当遇到“/”停止拼接,如果遇到'./'或者'../'则按照其原来的意思进行转换。

path.join():基本上同path.resolve()


一些结论

1)__dirname : 总是返回被执行的 js 所在 文件夹的绝对路径
2)__filename:总是返回被执行的 js 文件 的绝对路径
3)process.cwd(): 总是返回运行 node 命令时所在的文件夹的绝对路径

4)./:在 require() 中使用是跟 __dirname 的效果相同,不会因为启动脚本的目录不一样而改变,在其他情况下跟 process.cwd() 效果相同,是相对于启动脚本所在目录的路径


只有在 require() 时才使用相对路径(./表示当前目录下, ../表示上一级目录下) 的写法,其他地方一律使用绝对路径,如下:

// 当前目录下
path.dirname(__filename) + '/test.js'; //path.dirname()不包含文件名的绝对路径
// 相邻目录下
path.resolve(__dirname,'../lib/common.js');  //相对路径

例如:在Users文件夹下有如下目录结构:

app/
    -lib/
        -common.js
    -model
        -task.js
        -test.js

1) 在task.js文件下编写如下内容:

var path = require('path');
console.log(__dirname);
console.log(__filename);
console.log(process.cwd());
console.log(path.resolve('./'));

在model目录下运行node  task.js得到的输出是:

/Users/app/model
/Users/app/model/task.js
/Users/app/model
/Users/app/model

2) 还是上面的结构,将task.js文件里面的内容改成下面

var fs = require('fs');
var common = require('../lib/common');

fs.readFile('../lib/common.js',function (err,data) {
    if (err) return console.log(err);
    console.log(data);
});
在model目录下运行一切ok,在app目录下运行node model/task.js下报错,这是因为在app下运行,../lib/common.js会转换成/Users/app/lib/common.js



以下对node.js中的path模块的相关API做介绍

1、获取路径/文件名/扩展名

1)获取绝对路径(不包括文件名):path.dirname(filepath)

2)获取文件名:path.basename(filepath)

3)获取文件扩展名:path.extname(filepath)

2、路径组合

1)path.join([...paths]):

2)path.resolve([...paths])

3、文件路径分解/组合

1)path.parse(filepath):

2)path.format(pathObject):将pathObject的root、dir、base、name、ext属性,按照一定的规则,组合成一个文件路径

4、获取相对路径

1)path.relative(from,to)

5、平台相关接口/属性

1)path.posix:path相关属性、接口的linux实现
2)path.win32:path相关属性、接口的win32实现
3)path.sep:路径分隔符。在linux上是/,在windows上是\
4)path.delimiter:path设置的分割符。linux上是:,windows上是;


详细讲解的链接:点击打开链接







原文地址:https://blog.csdn.net/tangxiujiang

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


这篇文章主要介绍“基于nodejs的ssh2怎么实现自动化部署”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“基于nodejs...
本文小编为大家详细介绍“nodejs怎么实现目录不存在自动创建”,内容详细,步骤清晰,细节处理妥当,希望这篇“nodejs怎么实现目录不存在自动创建”文章能帮助大...
这篇“如何把nodejs数据传到前端”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这...
本文小编为大家详细介绍“nodejs如何实现定时删除文件”,内容详细,步骤清晰,细节处理妥当,希望这篇“nodejs如何实现定时删除文件”文章能帮助大家解决疑惑...
这篇文章主要讲解了“nodejs安装模块卡住不动怎么解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来...
今天小编给大家分享一下如何检测nodejs有没有安装成功的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文...
本篇内容主要讲解“怎么安装Node.js的旧版本”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎...
这篇“node中的Express框架怎么安装使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家...
这篇文章主要介绍“nodejs如何实现搜索引擎”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“nodejs如何实现搜索引擎...
这篇文章主要介绍“nodejs中间层如何设置”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“nodejs中间层如何设置”文...
这篇文章主要介绍“nodejs多线程怎么实现”,在日常操作中,相信很多人在nodejs多线程怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法...
这篇文章主要讲解了“nodejs怎么分布式”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“nodejs怎么分布式”...
本篇内容介绍了“nodejs字符串怎么转换为数组”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情...
这篇文章主要介绍了nodejs如何运行在php服务器的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇nodejs如何运行在php服务器文章都...
本篇内容主要讲解“nodejs单线程如何处理事件”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“nodejs单线程如何...
这篇文章主要介绍“nodejs怎么安装ws模块”,在日常操作中,相信很多人在nodejs怎么安装ws模块问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法...
本篇内容介绍了“怎么打包nodejs代码”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!
本文小编为大家详细介绍“nodejs接收到的汉字乱码怎么解决”,内容详细,步骤清晰,细节处理妥当,希望这篇“nodejs接收到的汉字乱码怎么解决”文章能帮助大家解...
这篇“nodejs怎么同步删除文件”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇...
今天小编给大家分享一下nodejs怎么设置淘宝镜像的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希