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中的运用上部
Nov 20 Javascript
文本框根据输入内容自适应高度的代码
Oct 24 Javascript
jquery实现鼠标拖拽滑动效果来选择数字的方法
May 04 Javascript
微信支付如何实现内置浏览器的H5页面支付
Sep 25 Javascript
遍历json 对象的属性并且动态添加属性的实现
Dec 02 Javascript
js实现网页定位导航功能
Mar 07 Javascript
jQuery 实现图片的依次加载图片功能
Jul 06 jQuery
JavaScript函数中的this四种绑定形式
Aug 15 Javascript
jQuery实现简单的下拉菜单导航功能示例
Dec 07 jQuery
JavaScript学习笔记之DOM基础操作实例小结
Jan 09 Javascript
微信小程序激励式视频广告组件使用详解
Dec 06 Javascript
Vue实现多页签组件
Jan 14 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中使用explode查找某个字符是否存在的方法
2011/07/12 PHP
将CMYK颜色值和RGB颜色相互转换的PHP代码
2014/07/28 PHP
PHP获取数组最后一个值的2种方法
2015/01/21 PHP
TP5框架实现自定义分页样式的方法示例
2020/04/05 PHP
选择TreeView控件的树状数据节点的JS方法(jquery)
2010/02/06 Javascript
js 可拖动列表实现代码
2011/12/13 Javascript
JavaScript高级程序设计 阅读笔记(十二) js内置对象Math
2012/08/14 Javascript
细说javascript函数从函数的构成开始
2013/08/29 Javascript
connect中间件session、cookie的使用方法分享
2014/06/17 Javascript
Javascript闭包(Closure)详解
2015/05/05 Javascript
详解JavaScript基于面向对象之创建对象(1)
2015/12/10 Javascript
Bootstrap富文本组件wysiwyg数据保存到mysql的方法
2016/05/09 Javascript
表单中单选框添加选项和移除选项
2016/07/04 Javascript
JS实现HTML表格排序功能
2016/08/05 Javascript
深入探讨Vue.js组件和组件通信
2016/09/12 Javascript
JS作用域闭包、预解释和this关键字综合实例解析
2016/12/16 Javascript
BootStrap3使用错误记录及解决办法
2016/12/22 Javascript
微信小程序-小说阅读小程序实例(demo)
2017/01/12 Javascript
深入理解Vue官方文档梳理之全局API
2017/11/22 Javascript
vue 自定义组件 v-model双向绑定、 父子组件同步通信的多种写法
2017/11/27 Javascript
AngularJS创建一个上传照片的指令实例代码
2018/02/24 Javascript
vue+iview动态渲染表格详解
2019/03/19 Javascript
Vue2.0+Vux搭建一个完整的移动webApp项目的示例
2019/03/19 Javascript
JS求1到任意数之间的所有质数的方法详解
2019/05/20 Javascript
在vue中利用v-html按分号将文本换行的例子
2019/11/14 Javascript
Vue和React有哪些区别
2020/09/12 Javascript
[03:48]DOTA2完美大师赛主赛事第二日精彩集锦
2017/11/24 DOTA
整理Python最基本的操作字典的方法
2015/04/24 Python
Python实现二叉树结构与进行二叉树遍历的方法详解
2016/05/24 Python
Python3中简单的文件操作及两个简单小实例分享
2017/06/18 Python
Python实现的多叉树寻找最短路径算法示例
2018/07/30 Python
对Python中的条件判断、循环以及循环的终止方法详解
2019/02/08 Python
在加拿大在线租赁和购买电子游戏:Game Access
2019/09/02 全球购物
2015年收银员个人工作总结
2015/04/01 职场文书
社区文明倡议书
2015/04/28 职场文书
感恩教师节主题班会
2015/08/12 职场文书