node path模块,node.js path

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: