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 异步调用框架 (Part 1 - 问题 & 场景)
Aug 03 Javascript
鼠标移动到图片名上,显示图片的简单实例
Jul 14 Javascript
iframe父页面获取子页面参数的方法
Feb 21 Javascript
javascript将相对路径转绝对路径示例
Mar 14 Javascript
javascript使用输出语句实现网页特效代码
Aug 06 Javascript
Javascript中常见的逻辑题和解决方法
Sep 17 Javascript
实现JavaScript高性能的数据存储
Dec 11 Javascript
jQuery常见的选择器及用法介绍
Dec 20 Javascript
Angular JS数据的双向绑定详解及实例
Dec 31 Javascript
Angular5中调用第三方js插件的方法
Feb 26 Javascript
JS错误处理与调试操作实例分析
Apr 13 Javascript
jquery更改元素属性attr()方法操作示例
May 22 jQuery
聊一聊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原型模式
2014/11/25 PHP
ThinkPHP中url隐藏入口文件后接收alipay传值的方法
2014/12/09 PHP
php中__toString()方法用法示例
2016/12/07 PHP
Win7环境下Apache连接MySQL提示连接已重置的解决办法
2017/05/09 PHP
JavaScript自执行闭包的小例子
2013/06/29 Javascript
多次注册事件会导致一个事件被触发多次的解决方法
2013/08/12 Javascript
在JS中如何调用JSP中的变量
2014/01/22 Javascript
jquery1.10给新增元素绑定事件的方法
2014/03/06 Javascript
js 调用百度地图api并在地图上进行打点添加标注
2014/05/13 Javascript
jquery实现增加删除行的方法
2015/02/03 Javascript
jQuery ajax请求返回list数据动态生成input标签,并把list数据赋值到input标签
2016/03/29 Javascript
JavaScript地理位置信息API
2016/06/11 Javascript
详解vue-cli中模拟数据的两种方法
2018/07/03 Javascript
微信小程序实现跑马灯效果
2020/10/21 Javascript
Vue项目使用localStorage+Vuex保存用户登录信息
2019/05/27 Javascript
详解微信小程序工程化探索之webpack实战
2020/04/20 Javascript
基于原生js实现九宫格算法代码实例
2020/07/03 Javascript
Python及Django框架生成二维码的方法分析
2018/01/31 Python
Tensorflow模型实现预测或识别单张图片
2019/07/19 Python
python之pymysql模块简单应用示例代码
2019/12/16 Python
Python 格式化打印json数据方法(展开状态)
2020/02/27 Python
python实现简单俄罗斯方块
2020/03/13 Python
基于CSS3制作立体效果导航菜单
2016/01/12 HTML / CSS
StubHub美国:购买或出售您的门票
2019/07/09 全球购物
法国购买隐形眼镜和眼镜网站:Optical Center
2019/10/08 全球购物
Three Graces London官网:英国奢侈品牌
2021/03/18 全球购物
小学教师的个人自我鉴定
2013/10/24 职场文书
一份报关员的职业规划范文
2014/01/08 职场文书
中学生差生评语
2014/01/30 职场文书
高中运动会入场词
2014/02/14 职场文书
餐厅执行经理岗位职责范本
2014/02/26 职场文书
2014年银行年终工作总结
2014/12/19 职场文书
书法社团活动总结
2015/05/07 职场文书
2019假期福利管理制度!
2019/07/15 职场文书
nginx proxy_cache 缓存配置详解
2021/03/31 Servers
MySQL 聚合函数排序
2021/07/16 MySQL