引入
var path = require("path")
path.join()
path.join('/path' ,'to' ,'test.txt') // '/path/to/test.txt'
优点
- 会正确使用当前系统的路径分隔符,Unix系统是"/",Windows系统是"\"。
- 用于处理边缘情况。使用文件系统路径时,会弹出许多边缘情况。例如,如果尝试手动连接两个路径,可能会意外地得到重复的路径分隔符。
path.join()方法为我们处理开头和结尾的斜杠
path.isAbsolute(path)
判断是否是绝对路径。
path.relative(from, to)
用于将绝对路径转为相对路径,返回从 from 到 to 的相对路径(基于当前工作目录)。(会基于当前系统的路径分隔符)
__dirname
是一个成员,用来动态获取当前文件模块所属的绝对路径
path.resolve([from ...], to)
将 to 参数解析为绝对路径,给定的路径的序列是从右往左被处理的,后面每个 path 被依次解析,直到构造完成一个绝对路径。 例如,给定的路径片段的序列为:/foo、/bar、baz,则调用 path.resolve('/foo', '/bar', 'baz') 会返回 /bar/baz。
// 当前运行node命令的路径是 /Users/wzz/learn/vue/myssr
console.log(__dirname);
// 输出 /Users/wzz/learn/vue/myssr/src/server
console.log(path.resolve('./a'));
// 输出 /Users/wzz/learn/vue/myssr/src/a
// 基于 当前运行node命令的路径
console.log(path.resolve('./a', '/b', '/c'));
// 输出 /c
// 最后一个参数是绝对路径,因此构造到此结束
console.log(path.resolve(__dirname, '/a'));
// 输出 /a
// 同上
console.log(path.resolve(__dirname, './a'));
// 输出 /Users/wzz/learn/vue/myssr/src/server/a/../c/../b
// __dirname是绝对路径,所以构造结束
console.log(path.resolve(__dirname, '../a'));
// 输出 /Users/wzz/learn/vue/myssr/src/a
// 同上,但是取上级目录
console.log(path.resolve(__dirname, './a', '../b'));
// 输出 /Users/wzz/learn/vue/myssr/src/server/b
// /Users/wzz/learn/vue/myssr/src/server/a/../b
console.log(path.resolve(__dirname, './a', '../c', '../b'));
// 输出 /Users/wzz/learn/vue/myssr/src/server/b
// /Users/wzz/learn/vue/myssr/src/server/a/../c/../b