nodejs—Path模块解析

113 阅读3分钟

nodejs 中,使用 path 内置模块处理路径、拼接路径,为开发提供了便利和程序的准确性。

commonjs中,安装node后直接 require进行导入即可

const path = require("path")

path模块的API解析:

1. basename()

​ 返回最后一部分

path.basename(path, [,suffix])

  • path - 路径
  • suffix - 要删除的后缀,(可选)
该方法返回 path 的最后一部分,并省略最后一部分的目录分隔符

例如:
     path.basename('D:\zj\test.json') 返回 "test.json"
     path.basename('D:\zj\test.json', '.json') 返回 "test"

2. dirname()

​ 返回目录名

path.dirname(path)

  • path - 路径
该方法返回 path 的目录名,尾随的目录分隔符被忽略

例如:
	path.dirname('D:\zj\test.json') 返回 "D:\zj"

3. extname()

​ 返回后缀

path.extname(path)

  • path - 路径
方法返回 path 的后缀名,查找以 .已经后面的string,
如果path最后一部分没有.的话,或者除了第一个字符之外没有.的话,就返回空字符串

例如:
   1. path.extname('D:\zj\test.json') 返回 ".json"
   2. path.extname('.index') 返回  ""
   3. path.extname('.index.md') 返回  ""

4. format()

​ 拼接字符串

path.format(pathObject)

  • pathobject - 具有以下属性的js对象
    • dir
    • root
    • base
    • name
    • ext
    返回将对象中的属性拼接,但是不会像 path.join() 那样用自动识别用目录分隔符将路径参数拼接起来
    但是:
       1. 有 dir 则忽略 root
       2. 有 base 则忽略 name 和 ext
    
    例如:
       1. path.format({
       		dir: '/zj',
       		root: '/data',
       		base: '/text.js',
       		name: '/a.js',
       		ext: '/b.js'
          }) 
          返回 "/zj/text.js"
       2. path.format({
       		dir: '/zj',
       		root: '/data',
       		name: '/a',
       		ext: '/b.js'
          }) 
          返回 "/zj/a/b.js"
    

    5. isAbsolute()

    判断 path 是否为绝对路径

    path.isAbsolute(path)

    • path
    例如:
    	1. path.isAbsolute('C:\zj') 返回true
    	2. path.isAbsolute('zj/') 返回false
    

    6. join()

    拼接路径

    path.join([...paths])

    • ...paths - 路径片段的序列
    path.join()将根据所在的操作系统使用该平台的目录分隔符,规范化拼接路径
    
    例如:
    	1. linux: 
    			path.join('a', 'b', 'c') 返回 "a/b/c"
    	2. windows:
    			path.join('a', 'b', 'c') 返回 "a\b\c"
    

    7. normalize()

    规范化给定的 path ,并会解析 .. 和 .

    path.normalize(path)

    • path - 路径
    注释:
    	1. 如果 path 里面有 .. 会解析到上级输出
    	2. 如果 path 里面有连续的 / 或者 \ ,会保留一个分隔符
    	
    例如:
    	1. path.normalize('/zj/data/a/..')  返回 "/zj/data"
    	2. path.normalize('C:////temp\\\\/\\/\\/foo/bar') 返回 "C:\\temp\\foo\\bar"
    

    8. parse()

    返回解析 path ,返回对象为 path 的重要元素组成

    path.parse(path)

    • path - 路径

    • 返回: 返回具有以下属性的对象

      • dir
      • root
      • base
      • name
      • ext
      与 path.format() 相反,
      
      返回对象属性的含义: 例如 path="E:\\zj\\download\\info.txt",
      	1. root: 根目录,比如:windows下的 "E:\\" 或者 linux下的 "/"
      	2. dir: 目录,"E:\\zj\\download"
      	3. base: 文件名+后缀,"info.txt"
      	4. name: 返回文件名除后缀,"info"
      	5. ext: 返回后缀,".txt"
      例如:
      	path.parse("E:\zj\download\info.txt") 
      返回:
          {
            root: 'E:\\',
            dir: 'E:\\zj\\download',
            base: 'info.txt',
            ext: '.txt',
            name: 'info'
          }
      

      9. relative()

      返回 from 到 to 的相对路径

      path.relative(from, to)

      • from - 第一个路径
      • to - 第二个路径
      例如: 
      	path.relative("D:\\zj\\electron\\electron_vue", "D:\\zj\\electron\\grpc_electron\\build")
      返回 ..\grpc_electron\build
      

      10. resolve()

      返回绝对路径,如果拼接不成绝对路径则返回当前工作目录

      path.resolve([...paths])

      • ...paths - 路径或路径片段的序列
      path.resolve()方法会从后向前去拼接绝对路径,直到从后向前找到绝对路径后,返回。
      
      例如:
      	1. path.resolve('/foo/bar', './baz');
      	返回 '/foo/bar/baz'
      	2. path.resolve('/foo/bar', '/tmp/file/');
      	返回 '/tmp/file'
      

      11. sep

      提供指定平台的 目录分隔符

      path.sep

      注释:
      	1. linux === /
      			path.sep = /
      	2. windows === \
      			path.sep = \