在网页中有很多需要使用我们URL路径的场景,包括a标签的href、link标签的href、script标签的src、imag标签的src、form中的action、ajax请求的url等等等等。它们都可以使用相对路径和绝对路径来引入文件,那么,我们如何区分相对路径与绝对路径呢?
一、相对路径
(1)概念:
相对路径是指相对于当前工作目录的路径。它依赖于你当前所在的位置,而不是从文件系统的根目录开始。相对路径以当前目录(./
)或父目录(../
)作为起点,然后列出到达目标文件或目录所需的相对路径。
相对路径在发送请求时,需与当前页面url路径进行计算后得到完整url,再发送请求。在我们的学习阶段用的较多。在 Node.js 中,使用相对路径可以简化文件或目录的引用,特别是在你的应用程序有多个文件和目录时。
(2)相对路径形式:
例如,假设我的当前工作目录是 /home/user/project,我可以使用相对路径 ./file.txt 来引用 file.txt 文件。如果我想要引用父目录下的father 中的childfile.txt 文件,我可以使用相对路径../father/childfile.txt
二、绝对路径
(1)概念:
绝对路径是指从文件系统的根目录开始的完整路径。它不会受到当前工作目录的影响。绝对路径以文件系统的根目录(如 /
或 C:\
)开始,然后依次列出到达目标文件或目录所需的每个子目录。
绝对路径的可靠性强,在项目中运用较多。在 Node.js 中,使用绝对路径可以确保准确地引用文件或目录,无论当前工作目录是什么。
(2)绝对路径形式:
例如:<a href="http://www.baidu.com">百度</a>
例如:在 Linux 或 macOS 上,绝对路径可能类似于 /home/user/project/file.txt
。在 Windows 上,绝对路径可能类似于 C:\Users\user\project\file.txt
三、如何区分node.js中的相对路径与绝对路径?
使用 Node.js 内置的 path
模块。path
模块提供了一系列实用函数来处理文件和目录路径。
以下是一些常用的 path
模块函数:
(1)检查给定路径是否是绝对路径/相对路径
path.isAbsolute(path)
代码示例:在我的nodejs下的my文件夹下建立一个示例代码,里面写了我如下所有的示例代码,如图所示:
const path=require('path');
// 判断是否绝对路径
const absolutePath='/my/text.js';
console.log(path.isAbsolute(absolutePath)); //输出true
// 判断是否相对路径
const relativePath = './file.txt';
console.log(path.isAbsolute(relativePath)); // 输出false。反向逻辑,证明是相对路径
(2)将一个或多个路径片段解析为绝对路径。如果参数是绝对路径,它将直接返回。否则,它将根据当前工作目录进行解析
path.resolve(path1, [path2], [...])
//解析为绝对路径
const resolvedPath = path.resolve(__dirname, relativePath);
console.log(resolvedPath); //D:\node.js\my\file.txt
(3)返回从 from
路径到 to
路径的相对路径
path.relative(from, to)
//返回从 /my 路径到 resolvedPath 路径的相对路径。
const relativeToProject = path.relative('/my', resolvedPath);
console.log(relativeToProject); //..\node.js\my\file.txt
(4)返回路径的目录名
path.dirname(path)
//获取路径的目录名
const directory = path.dirname(resolvedPath);
console.log(directory); //D:\node.js\my
(5)返回路径的文件名部分,可以选择包括文件扩展名
path.basename(path, [ext])
//获取路径的文件名
const fileName = path.basename(resolvedPath);
console.log(fileName); // 输出file.txt
通过这些函数,我们可以更容易地在 Node.js 中操作和处理绝对路径和相对路径。
在node.js中,建议使用绝对路径