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 相关文章推荐
js保存当前路径(cookies记录)
Dec 14 Javascript
js实现在页面上弹出蒙板技巧简单实用
Apr 16 Javascript
javascript在子页面中函数无法调试问题解决方法
Jan 17 Javascript
js实现的四级左侧网站分类菜单实例
May 06 Javascript
javascript表单事件处理方法详解
May 15 Javascript
JavaScript提高网站性能优化的建议(二)
Jul 24 Javascript
非常实用的vue导航钩子
Mar 20 Javascript
基于dataset的使用和图片延时加载的实现方法
Dec 11 Javascript
vue-cli项目优化方法- 缩短首屏加载时间
Apr 01 Javascript
微信小程序学习笔记之目录结构、基本配置图文详解
Mar 28 Javascript
从源码角度来回答keep-alive组件的缓存原理
Jan 18 Javascript
原生JS封装vue Tab切换效果
Apr 28 Vue.js
聊一聊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分多步骤填写发布信息的简单方法实例代码
2012/09/23 PHP
php IP转换整形(ip2long)的详解
2013/06/06 PHP
基于empty函数的输出详解
2013/06/17 PHP
UTF-8正则表达式如何匹配汉字
2015/08/03 PHP
Yii中实现处理前后台登录的新方法
2015/12/28 PHP
PHP判断是否微信访问的方法示例
2019/03/27 PHP
ExtJs使用总结(非常详细)
2012/03/22 Javascript
基于jquery自定义图片热区效果
2012/07/21 Javascript
Jquery 获取指定标签的对象及属性的设置与移除
2014/05/29 Javascript
jquery转盘抽奖功能实现
2015/11/13 Javascript
基于javascript实现图片切换效果
2016/04/17 Javascript
jQuery EasyUI API 中文帮助文档和扩展实例
2016/08/01 Javascript
js绘制购物车抛物线动画
2020/11/18 Javascript
利用Angularjs实现幻灯片效果
2016/09/07 Javascript
EasyUI创建人员树的实例代码
2017/09/15 Javascript
jQuery 防止相同的事件快速重复触发方法
2018/02/08 jQuery
JavaScript函数式编程(Functional Programming)纯函数用法分析
2019/05/22 Javascript
手把手教你 CKEDITOR 4 实现Dialog 内嵌 IFrame操作详解
2019/06/18 Javascript
layui监听单元格编辑前后交互的例子
2019/09/16 Javascript
vue中使用elementUI组件手动上传图片功能
2019/12/13 Javascript
Vue v-for中的 input 或 select的值发生改变时触发事件操作
2020/08/31 Javascript
python采用getopt解析命令行输入参数实例
2014/09/30 Python
python用reduce和map把字符串转为数字的方法
2016/12/19 Python
Python cookbook(字符串与文本)在字符串的开头或结尾处进行文本匹配操作
2018/04/20 Python
Diango + uwsgi + nginx项目部署的全过程(可外网访问)
2018/04/22 Python
对python 合并 累加两个dict的实例详解
2019/01/21 Python
Python和Go语言的区别总结
2019/02/20 Python
windows+vscode安装paddleOCR运行环境的步骤
2020/11/11 Python
美国婴儿和儿童服装购物网站:PatPat
2020/10/01 全球购物
市场专员岗位职责
2014/02/14 职场文书
教堂婚礼主持词
2014/03/14 职场文书
演讲稿的写法
2014/05/19 职场文书
暑期教师培训方案
2014/06/07 职场文书
《中国梦我的梦》中学生演讲稿
2014/08/20 职场文书
Python爬虫之爬取二手房信息
2021/04/27 Python
Nginx 安装SSL证书完成HTTPS部署
2022/04/28 Servers