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 27 Javascript
用JavaScript将从数据库中读取出来的日期型格式化为想要的类型。
Aug 15 Javascript
简单几行JS Code实现IE邮件转发新浪微博
Jul 03 Javascript
返回上一页并自动刷新的JavaScript代码
Feb 19 Javascript
js简单工厂模式用法实例
Jun 30 Javascript
javascript实现标签切换代码示例
May 22 Javascript
vue实现仿淘宝结账页面实例代码
Nov 08 Javascript
使用vuex的state状态对象的5种方式
Apr 19 Javascript
基于rollup的组件库打包体积优化小结
Jun 18 Javascript
浅谈vue项目4rs vue-router上线后history模式遇到的坑
Sep 27 Javascript
JavaScript回调函数callback用法解析
Jan 14 Javascript
使用Vue Composition API写出清晰、可扩展的表单实现
Jun 10 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
COM in PHP (winows only)
2006/10/09 PHP
php 删除记录同时删除图片文件的实现代码
2010/05/12 PHP
PHP开发框架Laravel数据库操作方法总结
2014/09/03 PHP
PHP 7.0.2 正式版发布
2016/01/08 PHP
php使用环形链表解决约瑟夫问题完整示例
2018/08/07 PHP
简单通用的JS滑动门代码
2008/12/19 Javascript
为指定元素增加样式的js代码
2009/12/09 Javascript
javascript移动设备Web开发中对touch事件的封装实例
2014/06/05 Javascript
js创建表单元素并使用submit进行提交
2014/08/14 Javascript
包含中国城市的javascript对象实例
2015/08/03 Javascript
js实现上一页下一页的效果【附代码】
2016/03/10 Javascript
JS文件上传神器bootstrap fileinput详解
2021/01/28 Javascript
搭建Bootstrap离线文档的方法
2016/12/02 Javascript
简单实现jquery焦点图
2016/12/12 Javascript
那些精彩的JavaScript代码片段
2017/01/12 Javascript
jQuery实现的省市联动菜单功能示例【测试可用】
2017/01/13 Javascript
浅谈ES6新增的数组方法和对象
2017/08/08 Javascript
10 种最常见的 Javascript 错误(频率最高)
2018/02/08 Javascript
vue实现裁切图片同时实现放大、缩小、旋转功能
2018/03/02 Javascript
基于vue.js组件实现分页效果
2018/12/29 Javascript
Node.js+Express+Mysql 实现增删改查
2019/04/03 Javascript
vue+element获取el-table某行的下标,根据下标操作数组对象方式
2020/08/07 Javascript
小程序组件传值和引入sass的方法(使用vant Weapp组件库)
2020/11/24 Javascript
[01:11]回顾历届DOTA2国际邀请赛中国区预选赛
2017/06/26 DOTA
使用Python实现下载网易云音乐的高清MV
2015/03/16 Python
对Python进行数据分析_关于Package的安装问题
2017/05/22 Python
python使用Matplotlib画饼图
2018/09/25 Python
Python实现的IP端口扫描工具类示例
2019/02/15 Python
使用Python实现NBA球员数据查询小程序功能
2020/11/09 Python
德国柯吉澳趣味家居:Koziol
2017/08/24 全球购物
高中生毕业自我鉴定
2013/10/10 职场文书
《植物妈妈有办法》教学反思
2014/02/25 职场文书
读群众路线的心得体会
2014/09/03 职场文书
2014离婚协议书范文
2014/09/10 职场文书
律师函格式范本
2015/05/27 职场文书
2015高中教师个人工作总结
2015/07/21 职场文书