node.js路径处理方法以及绝对路径详解


Posted in Javascript onMarch 04, 2021

1. 路径处理方法

__dirname

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

__filename

表示当前文件的绝对路径

module.filename ==== __filename 等价

process.cwd()

返回运行当前脚本的工作目录的路径,一般情况下不变,在process.chdir()后,或者shelljs.cd切换目录后会发生变化

process.chdir()

改变工作目录

2. 绝对路径

2.1  要获取node项目的根路径,可以使用 node-app-root-path 这个包

2.2  更好的写绝对路径的方式是使用best-require这个包

根目录使用~

require('~/application/apis/controllers/posts');
require('~/application/apis/services/rest');
require('~/application/apis/config');

别名目录使用:

//长目录设置别名
const ROOT_PATH = process.cwd();
require('best-require')(ROOT_PATH, {
 apis: ROOT_PATH + '/application/apis',
 controllers: ROOT_PATH + '/application/apis/controllers'
});
//使用别名更简洁
require(':controllers/posts');
require(':apis/services/rest');
require(':apis/config');

2.3 在全局变量上挂载路径

//声明
var path = require('path')
global.appRequire = function(path) {
 return require(path.resolve(__dirname, path))
}
//使用
var User = appRequire('app/model/User')

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

3.1 path.join 是连接路径,仅仅做路径的连接

console.log(path.join(__dirname,'a','b')); // 假如当前文件的路径是E:/node/1,那么拼接出来就是E:/node/1/a/b。
console.log(path.join(__dirname,'/a','/b','..')); // 路径开头的/不会影响拼接,..代表上一级文件,拼接出来的结果是:E:/node/1/a
console.log(path.join(__dirname,'a',{},'b')); // 而且path.join()还会帮我们做路径字符串的校验,当字符串不合法时,会抛出错误:Path must be a string.

3.2 path.resolve 是解析绝对路径,将一个或多个连接后的路径解析为绝对路径,以应用程序为根目录,普通字符串代表子目录,/代表绝对路径根目录

3.2.1 /作为根目录,多个/开始的路径,只有最后一个有效,前面的被忽略

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

3.2.2 总是返回一个以相对于当前的工作目录(working directory)的绝对路径

path.resolve('./a', './b') // '/Users/username/Projects/webpack-demo/a/b'

3.2.3 path.resolve()方法是以程序为根目录,作为起点,根据参数解析出一个绝对路径

console.log(path.resolve()); // 得到应用程序启动文件的目录(得到当前执行文件绝对路径) E:\zf\webpack\1\src
console.log(path.resolve('a','/c')); // E:/c 因为/斜杠代表根目录,所以得到的就是E:/c
console.log(path.resolve(__dirname,'img/so')); // E:\zf\webpack\1\src\img\so 这个就是将文件路径拼接,并不管这个路径是否真实存在。
console.log(path.resolve('wwwroot', 'static_files/png/', '../gif/image.gif')) // E:\zf\webpack\1\src\wwwroot\static_files\gif\image.gif

附Node.js获取项目根目录的小技巧

大家都知道node.js只提供了一个 dirname全局变量,通过 dirname可以获得“C:\wwwroot\yidata\server”。

这时需要用到path。

import path from 'path'; (ES6)或var path = require
(
 'path '
);
path.join(dirname,'../')

即可获取到node.js的项目根目录。

path.join(dirname,'../app/img/favicon.ico')

即可获取目标文件。

总结

到此这篇关于node.js路径处理方法以及绝对路径的文章就介绍到这了,更多相关nodejs路径处理及绝对路径内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
Javascript 类与静态类的实现(续)
Apr 02 Javascript
AJAX使用了UpdatePanel后无法使用alert弹出脚本
Apr 02 Javascript
ExtJS中设置下拉列表框不可编辑的方法
May 07 Javascript
node.js [superAgent] 请求使用示例
Mar 13 Javascript
使用jquery实现鼠标滑过弹出更多相关信息层附源码下载
Nov 23 Javascript
js实现简单排列组合的方法
Jan 27 Javascript
js实现背景图自适应窗口大小
Jan 10 Javascript
微信小程序 textarea 组件详解及简单实例
Jan 10 Javascript
Javascript将图片的绝对路径转换为base64编码的方法
Jan 11 Javascript
React Native使用fetch实现图片上传的示例代码
Mar 07 Javascript
react-native-video实现视频全屏播放的方法
Mar 19 Javascript
用Node编写RESTful API接口的示例代码
Jul 04 Javascript
聊一聊JS中的prototype
Sep 29 #Javascript
jQuery模拟Marquee实现无缝滚动效果完整实例
Sep 29 #Javascript
jquery对Json的各种遍历方法总结(必看篇)
Sep 29 #Javascript
浅析Javascript的自动分号插入(ASI)机制
Sep 29 #Javascript
完美解决IE9浏览器出现的对象未定义问题
Sep 29 #Javascript
JSON 对象未定义错误的解决方法
Sep 29 #Javascript
Node.js检测端口(port)是否被占用的简单示例
Sep 29 #Javascript
You might like
php实现基于openssl的加密解密方法
2016/09/30 PHP
PHPstorm快捷键(分享)
2017/07/17 PHP
PHP生成推广海报的方法分享
2018/04/22 PHP
PHP For循环字母A-Z当超过26个字母时输出AA,AB,AC
2020/02/16 PHP
JavaScript中关于indexOf的使用方法与问题小结
2010/08/05 Javascript
原生JS和JQuery动态添加、删除表格行的方法
2015/05/28 Javascript
JQuery实现的按钮倒计时效果
2015/12/23 Javascript
JavaScript数组方法大全(推荐)
2016/07/05 Javascript
JS实现多张图片预览同步上传功能
2017/06/23 Javascript
js实现鼠标跟随运动效果
2020/08/02 Javascript
微信小程序实现动态设置placeholder提示文字及按钮选中/取消状态的方法
2017/12/14 Javascript
JS关闭子窗口并且刷新上一个窗口的实现示例
2020/03/10 Javascript
vue引入静态js文件的方法
2020/06/20 Javascript
[59:08]DOTA2上海特级锦标赛C组小组赛#2 LGD VS Newbee第一局
2016/02/27 DOTA
[01:00:14]DOTA2官方TI8总决赛纪录片 真视界True Sight
2019/01/16 DOTA
python实现的生成随机迷宫算法核心代码分享(含游戏完整代码)
2014/07/11 Python
Python中利用sorted()函数排序的简单教程
2015/04/27 Python
解决python3 urllib中urlopen报错的问题
2017/03/25 Python
Python爬虫爬取一个网页上的图片地址实例代码
2018/01/16 Python
Python使用pyserial进行串口通信的实例
2019/07/02 Python
python实现图片压缩代码实例
2019/08/12 Python
python通过nmap扫描在线设备并尝试AAA登录(实例代码)
2019/12/30 Python
基于python 取余问题(%)详解
2020/06/03 Python
python之语音识别speech模块
2020/09/09 Python
用python批量移动文件
2021/01/14 Python
美国性感内衣店:Yandy
2018/06/12 全球购物
乐高瑞士官方商店:LEGO CH
2020/08/16 全球购物
阿迪达斯中国官网:Adidas中国
2020/12/14 全球购物
Chupi官网:在爱尔兰手工制作的订婚、结婚戒指和精美珠宝
2020/09/28 全球购物
ShellScript面试题一则-ShellScript编程
2014/06/24 面试题
群众路线教育实践活动心得体会(四风)
2014/11/03 职场文书
教育教学读书笔记
2015/07/02 职场文书
成本低的5个创业项目:投资小、赚钱快
2019/08/20 职场文书
python实战之一步一步教你绘制小猪佩奇
2021/04/22 Python
JUnit5常用注解的使用
2021/07/02 Java/Android
Java实现HTML转为Word的示例代码
2022/06/28 Java/Android