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 相关文章推荐
分享XmlHttpRequest调用Webservice的一点心得
Jul 20 Javascript
js中Image对象以及对其预加载处理示例
Nov 20 Javascript
Javascript Ajax异步读取RSS文档具体实现
Dec 12 Javascript
基于javascript实现判断移动终端浏览器版本信息
Dec 09 Javascript
浅谈jQuery中ajaxPrefilter的应用
Aug 01 Javascript
JS+Canvas实现的俄罗斯方块游戏完整实例
Dec 12 Javascript
Bootstarp基本模版学习教程
Feb 01 Javascript
微信小程序 出现错误:{"baseresponse":{"errcode":-80002,"errmsg":""}}解决办法
Feb 23 Javascript
基于VUE.JS的移动端框架Mint UI的使用
Oct 11 Javascript
浅析Vue自定义组件的v-model
Nov 26 Javascript
vue基于viewer实现的图片查看器功能
Apr 12 Javascript
Vue +WebSocket + WaveSurferJS 实现H5聊天对话交互的实例
Nov 18 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 setcookie() cannot modify header information 的解决方法
2009/01/09 PHP
PHP的范围解析操作符(::)的含义分析说明
2011/07/03 PHP
解决ThinkPHP下使用上传插件Uploadify浏览器firefox报302错误的方法
2015/12/18 PHP
PHP中strcmp()和strcasecmp()函数字符串比较用法分析
2016/01/07 PHP
PHP  Yii清理缓存的实现方法
2016/11/10 PHP
PHP中危险的file_put_contents函数详解
2017/11/04 PHP
laravel框架中控制器的创建和使用方法分析
2019/11/23 PHP
Javascript Object.extend
2010/05/18 Javascript
理解Javascript_15_作用域分配与变量访问规则,再送个闭包
2010/10/20 Javascript
JavaScript 匿名函数(anonymous function)与闭包(closure)
2011/10/04 Javascript
JS 屏蔽按键效果与改变按键效果的示例代码
2013/12/24 Javascript
jQuery手动点击实现图片轮播特效
2020/04/20 Javascript
JavaScript实现字符串与日期的互相转换及日期的格式化
2016/03/07 Javascript
jQuery插件实现图片轮播特效
2016/06/16 Javascript
vue项目中用cdn优化的方法
2018/01/03 Javascript
webpack 模块热替换原理
2018/04/09 Javascript
Node.js npm命令运行node.js脚本的方法
2018/10/10 Javascript
jQuery实现合并表格单元格中相同行操作示例
2019/01/28 jQuery
如何在Angular8.0下使用ngx-translate进行国际化配置
2019/07/24 Javascript
微信小程序中data-key属性之数据传输(经验总结)
2020/08/22 Javascript
通过JS判断网页是否为手机打开
2020/10/28 Javascript
python cx_Oracle模块的安装和使用详细介绍
2017/02/13 Python
Python+Selenium+PIL+Tesseract自动识别验证码进行一键登录
2017/09/20 Python
浅述python中深浅拷贝原理
2018/09/18 Python
Python之修改图片像素值的方法
2019/07/03 Python
python实现复制文件到指定目录
2019/10/16 Python
Python classmethod装饰器原理及用法解析
2020/10/17 Python
浅谈CSS3中display属性的Flex布局的方法
2017/08/14 HTML / CSS
uniapp+Html5端实现PC端适配
2020/07/15 HTML / CSS
Scholastic父母商店:儿童书籍
2017/01/01 全球购物
银行优秀员工事迹
2014/02/06 职场文书
本科毕业自我鉴定
2014/03/20 职场文书
会议承办单位欢迎词
2019/07/09 职场文书
使用PDF.js渲染canvas实现预览pdf的效果示例
2021/04/17 Javascript
详解Django的MVT设计模式
2021/04/29 Python
Pandas实现批量拆分与合并Excel的示例代码
2022/05/30 Python