node path模块,node.js path
本文带你了解Node.js中的Path模块,并介绍Path模块的用法和常用的Path方法。
node.js速度课程简介:进入学习
Node.js路径模块是一个内置模块,可以帮助您独立于操作系统使用文件系统路径。如果你想构建支持OSX、Linux和Windows的CLI工具,Path模块是必不可少的。[推荐研究:《nodejs 教程》]
即使您正在构建一个只在Linux上运行的后端服务,path模块仍然有助于在操作路径时避免边缘情况。
下面我们将描述一些使用路径模块的常见模式,以及为什么应该使用路径模块而不是将路径操作成字符串。
在 Node 中使用 Path 模块
path模块中最常用的方法是path.join()。此方法将一个或多个路径段组合成一个字符串,如下所示:
const path=require(path )
Path.join (/path , to , test.txt)///path/to/test.txt 您可能想知道为什么要使用Path.join()方法而不是字符串串联。
/path / to / test . txt ///path/to/test . txt
[/path , to , test.txt]。Join (/)//path/to/test.txt 有两个主要原因:
对于 Windows 支持。使用Windows反斜杠(\)而不是正斜杠(/)作为路径分隔符。Path.join()将为我们处理这个问题。因为path.join(data , test.txt )在Linux和OSX以及Windows上都将返回 data/test.txt 。用于处理边缘情况。使用文件系统路径时,会弹出很多边缘情况。例如,如果您尝试手动连接两条路径,可能会意外地得到重复的路径分隔符。path.join()方法为我们处理开头和结尾的斜杠,如下所示:path.join (data , test.txt)//data/test.txt
path.join(data ,/test.txt) //data/test.txt
path.join(data/, test.txt) //data/test.txt
Path.join (data/,/test . txt )// data/test . txt
常用的 Path 方法
path模块还有几个提取路径成分的方法,比如文件扩展名或者目录。
path.extname()方法以字符串形式返回文件扩展名:
path . extname(/path/to/test . txt )/。“测试”就像连接两条路径。获取文件扩展名比看起来要复杂得多。
如果路径结束于。它会回来的.如果文件没有扩展名并且不以结尾。或者如果文件没有扩展名,它将返回一个空值。
path.extname(/path/to/index ) //.
path . extname(/path/to/README )//
Path.extname (/path/to/)。gitignore)/ 路径模块也有path.basename()和path.dirname()方法分别获取文件名(包括扩展名)和目录。
path . basename(/path/to/test . txt )// test . txt
path . dirname(/path/to/test . txt )//path/to path . parse()方法返回一个对象,该对象包含分为五个不同部分的路径,包括扩展名和目录。path.parse()方法也是一种获取不带任何扩展名的文件名的方法。
path.parse(/path/to/test.txt )
/*
{
根:“/”,
目录:“/路径/到”,
base: test.txt ,
分机:。文本,
名称:“测试”
}
*/
使用 path.relative()
像path.join()和path.extname()这样的方法涵盖了大多数使用文件路径的用例。但是path模块有几个更高级的方法,比如path.relative()。
path.relative(from,to)方法根据当前工作目录返回从到的相对路径。如果来自和要解析到同一路径(分别调用path.resolve()后),则返回零长度字符串。
//返回第二个路径相对于第一个路径的路径
path . relative(/app/views/home . html ,/app/layout/index.html)/././layout/index.html 如果给定了相对于一个目录的路径,但需要相对于另一个目录的路径,则path.relative()方法非常有用。例如,流行的文件系统监控库Chokidar提供了相对于监控目录的路径。
const watcher=choki Dar . watch( mydir )
//如果用户添加了mydir/path/to/test.txt,则会打印mydir/path/to/test.txt。
Watcher.on (add ,path=console.log (path))。这就是Chokidar工具被广泛使用的原因。如常见的Gatsby或webpack,内部也使用path.relative()方法。
例如,Gatsby使用path.relative()方法来帮助同步静态文件目录。
导出常量syncStaticDir=(): void={
const static dir=nodepath . join(process . CWD(),` static `)
乔基达尔。手表(静态方向)。在(` add `,path={
const relative Path=nodepath . relative(static dir,path)
fs.copy(path,` $ { process . CWD()}/public/$ { relative path } `)
})。在(` change `,path={
const relative Path=nodepath . relative(static dir,path)
fs.copy(path,` $ { process . CWD()}/public/$ { relative path } `)
})
}现在,假设用户向静态目录添加了一个新文件main.js。Chokidar调用on(add )事件处理程序,路径设置为static/main.js但是,当你将文件复制到/public时,就不需要额外的static/。
调用path.relative (static , static/main.js )返回static/main.js相对于static的路径,这正是你要将static的内容复制到public的路径。
跨操作系统路径和 URL
默认情况下,path模块会根据节点进程运行的操作系统自动在POSIX(OSX、Linux)和Windows模式之间切换。
但是,path模块确实可以使用POSIX上的Windows path模块,反之亦然。Path.posix和path.win32属性分别包含posix和Windows版本的路径模块。
//返回 path\to\test.txt ,与操作系统无关
path.win32.join(path , to , test.txt )
//返回“path/to/test.txt”,与操作系统无关
Path.posix.join (path , to , test.txt )大多数情况下,根据检测到的操作系统自动切换路径模块是正确的行为。但是,使用path.posix和path.win32属性可能对总是希望输出Windows或Linux样式路径的测试或应用程序有所帮助。
例如,一些应用程序使用path.join()和path.extname()等方法来处理URL路径。
// https://API . my domain . app/API/v2/me
https://api.mydomain.app/path.join( API , v2 , me )这个方法适用于Linux和OSX,但是如果有人试图将你的应用程序部署到某个无服务器上呢?
您将最终与https://api.mydomain.app/api\v2\me,这是一个无效的网址!如果使用path模块来操作URL,应该使用path.posix
有关编程的更多信息,请访问:编程视频!这是Node.js中路径模块和常用方法的详细信息,请关注我们的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。