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 相关文章推荐
预加载css或javascript的js代码
Apr 23 Javascript
浅析jQuery对select操作小结(遍历option,操作option)
Jul 04 Javascript
JavaScript获得页面base标签中url的方法
Apr 03 Javascript
zepto与jquery的区别及zepto的不同使用8条小结
Jul 28 Javascript
原生JS实现导航下拉菜单效果
Nov 25 Javascript
JavaScript仿微信打飞机游戏
Jul 05 Javascript
Angular实现的简单查询天气预报功能示例
Dec 27 Javascript
vue+vuex+axios实现登录、注册页权限拦截
Mar 09 Javascript
iview Upload组件多个文件上传的示例代码
Sep 30 Javascript
ES6 新增的创建数组的方法(小结)
Aug 01 Javascript
实例分析JS中的相等性判断===、 ==和Object.is()
Nov 17 Javascript
Egg Vue SSR 服务端渲染数据请求与asyncData
Nov 24 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多个文件上传到服务器实例
2014/10/29 PHP
php通过前序遍历树实现无需递归的无限极分类
2015/07/10 PHP
php邮件发送的两种方式
2020/04/28 PHP
php+mysql实现无限级分类
2015/11/11 PHP
关于php中的json_encode()和json_decode()函数的一些说明
2016/11/20 PHP
ThinkPHP实现转换数据库查询结果数据到对应类型的方法
2017/11/16 PHP
使用TextRange获取输入框中光标的位置的代码
2007/03/08 Javascript
Mootools 1.2教程 类(一)
2009/09/15 Javascript
javascript 节点遍历函数
2010/03/28 Javascript
一段批量给页面上的控件赋值js
2010/06/19 Javascript
JavaScript-RegExp对象只能使用一次问题解决方法
2014/06/23 Javascript
JavaScript控制table某列不显示的方法
2015/03/16 Javascript
jQuery实现分章节锚点“回到顶部”动画特效代码
2015/10/23 Javascript
利用javascript如何随机生成一定位数的密码
2017/09/22 Javascript
express+mockjs实现模拟后台数据发送功能
2018/01/07 Javascript
vue 实现通过vuex 存储值 在不同界面使用
2019/11/11 Javascript
Python使用pickle模块储存对象操作示例
2018/08/15 Python
python 在右键菜单中加入复制目标文件的有效存放路径(单斜杠或者双反斜杠)
2020/04/08 Python
在 Python 中使用 MQTT的方法
2020/08/18 Python
python 读取串口数据的示例
2020/11/09 Python
Python的logging模块基本用法
2020/12/24 Python
selenium与xpath之获取指定位置的元素的实现
2021/01/26 Python
python爬取2021猫眼票房字体加密实例
2021/02/19 Python
美国眼镜网站:EyeBuyDirect
2017/04/13 全球购物
巴黎卡诗加拿大官网:Kérastase加拿大
2018/11/12 全球购物
澳大利亚儿童精品仓库:Goo & Co.
2019/06/20 全球购物
最好的商品表达自己:Cafepress
2019/09/04 全球购物
Jar包的作用是什么
2014/03/30 面试题
党员承诺书范文
2014/05/19 职场文书
八项规定个人对照检查材料思想汇报
2014/09/25 职场文书
工作失职检讨书500字
2014/10/17 职场文书
2014业务员年终工作总结
2014/12/09 职场文书
员工开除通知书
2015/04/25 职场文书
商场圣诞节活动总结
2015/05/06 职场文书
关于分班的感言
2015/08/04 职场文书
Java生成读取条形码和二维码的简单示例
2021/07/09 Java/Android