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 相关文章推荐
常用参考资料(手册)下载或者链接
Jul 22 Javascript
setInterval,setTimeout与jquery混用的问题
Apr 08 Javascript
Javascript 修改String 对象 增加去除空格功能(示例代码)
Nov 30 Javascript
js使用循环清空某个div中的input标签值
Sep 29 Javascript
一款基于jQuery的图片场景标注提示弹窗特效
Jan 05 Javascript
总结Javascript中的隐式类型转换
Aug 24 Javascript
原生js实现倒计时功能(多种格式调用)
Jan 12 Javascript
jquery实现input框获取焦点的方法
Feb 06 Javascript
Node批量爬取头条视频并保存方法
Sep 20 Javascript
node微信开发之获取access_token+自定义菜单
Mar 17 Javascript
vue使用localStorage保存登录信息 适用于移动端、PC端
May 27 Javascript
微信小程序组件生命周期的踩坑记录
Mar 03 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
丧钟首部独立剧集《丧钟:骑士与龙》北美正式开播,场面血腥
2020/04/09 欧美动漫
安装APACHE
2007/01/15 PHP
PHP 抓取网页图片并且另存为的实现代码
2010/03/24 PHP
php生成随机密码的几种方法
2011/01/17 PHP
PHP提示Notice: Undefined variable的解决办法
2012/11/24 PHP
mysqli_set_charset和SET NAMES使用抉择及优劣分析
2013/01/13 PHP
解析centos中Apache、php、mysql 默认安装路径
2013/06/25 PHP
is_uploaded_file函数引发的不能上传文件问题
2013/10/29 PHP
JavaScript 特殊字符
2007/04/05 Javascript
THREE.JS入门教程(4)创建粒子系统
2013/01/24 Javascript
基于JQuery 滑动与动画的说明介绍
2013/04/18 Javascript
使用javascript实现页面定时跳转总结篇
2013/09/21 Javascript
js实现从中间开始往上下展开网页窗口的方法
2015/03/02 Javascript
详解JavaScript中void语句的使用
2015/06/04 Javascript
JavaScript模拟数组合并concat
2016/03/06 Javascript
AngularJS ng-bind-html 指令详解及实例代码
2016/07/30 Javascript
Javascript json object 与string 相互转换的简单实现
2016/09/27 Javascript
JS控制HTML元素的显示和隐藏的两种方法
2016/09/27 Javascript
微信小程序 简单教程实例详解
2017/01/13 Javascript
js常用的继承--组合式继承
2017/03/06 Javascript
Vue异步加载about组件
2017/10/31 Javascript
移动端 Vue+Vant 的Uploader 实现上传、压缩、旋转图片功能
2019/06/10 Javascript
[56:46]Liquid vs IG 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
python将字符串转换成数组的方法
2015/04/29 Python
django中的setting最佳配置小结
2017/11/21 Python
WIn10+Anaconda环境下安装PyTorch(避坑指南)
2019/01/30 Python
Python分析微信好友性别比例和省份城市分布比例的方法示例【基于itchat模块】
2020/05/29 Python
基于python实现操作redis及消息队列
2020/08/27 Python
英国时尚家具、家居饰品及礼品商店:Graham & Green
2016/09/15 全球购物
阿联酋优惠券服务:Living Kool
2019/12/12 全球购物
万户网络JAVA程序员岗位招聘笔试试卷
2013/01/08 面试题
创建学习型党组织实施方案
2014/03/29 职场文书
初婚未育证明样本
2014/10/24 职场文书
个人借条范本
2015/05/25 职场文书
python turtle绘图
2022/05/04 Python
python实现学员管理系统(面向对象版)
2022/06/05 Python