路径的问题

大约 1 分钟

路径的问题

path模块的引入

import path from 'path'// 直接引用node中自带的模块

path.join()

使用平台特定的分隔符(window:/)作为定界符,将所有给定的path片段连接在一起,然后规范化生成的路径

path.join('a', 'b', 'c')   // 输出结果为: '/a/b/c'
path.join('a', '/b', 'c')  // 输出结果为: '/a/b/c'
path.join('a/b', '../', 'c') // 输出结果为: '/a/c'
path.join('a', './', 'c') // 输出结果为:'/a/c'

path.resolve()

将路径或者路径片段序列化为绝对路径

// 假设当前绝对路径为/admin/user
path.resolve('a', 'b', 'c') // 输出结果为:'/admin/user/a/a/c'
path.resolve('a', '/b', 'c') // 输出结果为: '/b/c'
path.resolve('a/b', '../', 'c') // 输出结果为:'/admin/user/a/c'
path.resolve('a', './', 'c') // 输出结果为:'admin/user/a/c'
注意`/`的存在, '/a'代表的是根目录下的a, 'a'代表的是当前目录下的a

为了要获取到符合 / 格式的路径,我们可以使用 PATH 模块提供的 path.sep 接口open in new window进行字符串匹配截取,接口会根据系统环境的不同进行匹配截取。

在 Unix 系统下

foo/bar/baz'.split(path.sep);
// Returns: ['foo', 'bar', 'baz']

Windows 系统下

foo\\bar\\baz'.split(path.sep);
// Returns: ['foo', 'bar', 'baz']

path.sep 的赋值也是根据操作系统来决定是 / 还是 `\

最终的方案自然是 string.split(path.sep).join('/') 来进行分隔符的替换。