三木社区

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 335|回复: 0
打印 上一主题 下一主题

Node.js 路径

[复制链接]

1562

主题

1564

帖子

4904

积分

博士

Rank: 8Rank: 8

积分
4904
跳转到指定楼层
楼主
发表于 2017-8-11 08:42:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本模块包含一系列处理和转换文件路径的工具集。基本所有的反复都仅对字符串转换。文件系统不会检查路径是否有效。
通过 require('path') 来访问这个模块。提供了以下方法:
path.normalize(p)
规范化路径,注意'..' 和 '.'。
发现多个斜杠时,会替换成一个斜杠。当路径末尾包含一个斜杠时,保留。Windows 系统使用反斜杠。
例如:
  1. path.normalize('/foo/bar//baz/asdf/quux/..')
  2. // returns
  3. '/foo/bar/baz/asdf'
复制代码
path.join([path1][, path2][, ...])
连接所有的参数,并规范化输出路径。
参数必须是字符串。在 v0.8 版本,非字符参数会被忽略。v0.10之后的版本后抛出异常。
例如:
  1. path.join('/foo', 'bar', 'baz/asdf', 'quux', '..')
  2. // returns
  3. '/foo/bar/baz/asdf'

  4. path.join('foo', {}, 'bar')
  5. // throws exception
  6. TypeError: Arguments to path.join must be strings
复制代码
path.resolve([from ...], to)
将 to 参数解析为绝对路径。
如果参数 to 不是一个相对于参数 from 的绝对路径,to会添加到 from 右侧,直到找到一个绝对路径为止。如果使用所有 from 参数后,还是没有找到绝对路径,将会使用当前工作目录。返回的路径已经规范化过,并且去掉了尾部的斜杠(除非是根目录)。非字符串的参数会被忽略。
另一种思路就是在shell里执行一系列的 cd 命令。
  1. path.resolve('foo/bar', '/tmp/file/', '..', 'a/../subfile')
复制代码
类似于:
  1. cd foo/bar
  2. cd /tmp/file/
  3. cd ..
  4. cd a/../subfile
  5. pwd
复制代码
不同点是,不同的路径不需要存在的,也可能是文件。
例如:
  1. path.resolve('/foo/bar', './baz')
  2. // returns
  3. '/foo/bar/baz'

  4. path.resolve('/foo/bar', '/tmp/file/')
  5. // returns
  6. '/tmp/file'

  7. path.resolve('wwwroot', 'static_files/png/', '../gif/image.gif')
  8. // if currently in /home/myself/node, it returns
  9. '/home/myself/node/wwwroot/static_files/gif/image.gif'
复制代码



回复

使用道具 举报

Archiver|手机版|小黑屋|三木电子社区 ( 辽ICP备11000133号-4 )

辽公网安备 21021702000620号

GMT+8, 2025-11-2 00:43 , Processed in 0.027411 second(s), 23 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表