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 相关文章推荐
jquerymobile局部渲染的各种刷新方法小结
Mar 05 Javascript
JavaScript中利用Array和Object实现Map的方法
Jul 27 Javascript
第六章之辅组类与响应式工具
Apr 25 Javascript
jquery mobile界面数据刷新的实现方法
May 28 Javascript
jQuery ready()和onload的加载耗时分析
Sep 08 Javascript
微信小程序 action-sheet 反馈上拉菜单简单实例
May 11 Javascript
Angular中ng-options下拉数据默认值的设定方法
Jun 21 Javascript
浅谈vue-lazyload实现的详细过程
Aug 22 Javascript
jquery获取file表单选择文件的路径、名字、大小、类型
Jan 18 jQuery
JQuery获取可视区尺寸和文档尺寸及制作悬浮菜单示例
May 14 jQuery
微信小程序云开发之使用云存储
May 17 Javascript
小程序中canvas的drawImage方法参数使用详解
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&&mysql)三
2006/10/09 PHP
php数组函数序列之rsort() - 对数组的元素值进行降序排序
2011/11/02 PHP
php 验证码(倾斜,正弦干扰线,黏贴,旋转)
2013/06/29 PHP
PHP小教程之实现链表
2014/06/09 PHP
php的SimpleXML方法读写XML接口文件实例解析
2014/06/16 PHP
php设计模式之组合模式实例详解【星际争霸游戏案例】
2020/03/27 PHP
js 针对html DOM元素操作等经验累积
2014/03/11 Javascript
使用canvas实现仿新浪微博头像截取上传功能
2015/09/02 Javascript
jquery图片轮播特效代码分享
2020/04/20 Javascript
JavaScript获取客户端IP的方法(新方法)
2016/03/11 Javascript
AngularJs Forms详解及简单示例
2016/09/01 Javascript
jQuery插件HighCharts绘制2D圆环图效果示例【附demo源码下载】
2017/03/09 Javascript
Vue响应式原理详解
2017/04/18 Javascript
微信小程序表单验证错误提示效果
2017/05/19 Javascript
vue router路由嵌套不显示问题的解决方法
2017/06/17 Javascript
jQuery中将json数据显示到页面表格的方法
2018/05/27 jQuery
vue计算属性get和set用法示例
2019/02/08 Javascript
利用JavaScript的Map提升性能的方法详解
2019/08/14 Javascript
微信小程序实现拖拽功能
2019/09/26 Javascript
微信小程序中插入激励视频广告并获取收益(实例代码)
2019/12/06 Javascript
react组件基本用法示例小结
2020/04/27 Javascript
[01:02:46]VGJ.S vs NB 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
python调用windows api锁定计算机示例
2014/04/17 Python
python清除字符串里非数字字符的方法
2015/07/02 Python
Python实现点阵字体读取与转换的方法
2019/01/29 Python
pytorch使用tensorboardX进行loss可视化实例
2020/02/24 Python
Python3.9又更新了:dict内置新功能
2020/02/28 Python
在脚本中单独使用django的ORM模型详解
2020/04/01 Python
您的时尚,您的生活方式:DTLR Villa
2019/12/25 全球购物
英国时尚配饰、珠宝和服装网站:KJ Beckett
2020/01/23 全球购物
银行实习生的自我评价
2013/12/09 职场文书
优秀团队获奖感言
2014/02/19 职场文书
教师远程培训感言
2014/03/06 职场文书
做一个有道德的人活动方案
2014/08/25 职场文书
我们的节日中秋节活动总结
2015/03/23 职场文书
MySQL中rank() over、dense_rank() over、row_number() over用法介绍
2022/03/23 MySQL