概述
提供了一些处理文件路劲的小工具
引用:var path = require("path")
补充:
__dirname 和 __filename的使用
__dirname:是当前文件夹的绝对路径
__filename:是当前文件的绝对路径
用来解决文件操作路劲的相对路径问题
因为在文件操作中,相对路径相对于执行 node
命令所处的目录
所以为了尽量避免这个问题,都建议文件操作的相对路径都转为:动态的绝对路径
常配合path.join()和path.resolve()使用
注意
区分在vue文件中使用和终端node中使用两种的区别
var path = require("path")
console.log(path.join(__dirname));
console.log(path.join(__filename));
//文件的目录是E:\00vueTest\test.js,直接node test.js执行,终端打印如下:
E:\00vueTest
E:\00vueTest\test.js
//在vue文件中使用,打包后目录
E:\00vueTest\helloworld\dist\js,浏览器打开index.html文件后,打印如下:
/
/index.js
以下的代码是在window系统上操作的结果
方法
path.normalize(pathStr)
规范化路径,处理链接中的"..","."和"/"。多个斜杆会被替换成一个斜杆,路径末如包含斜杆,则包括一个斜杆
注意链接是否含'..'和'.'
// node的执行效果,浏览器打印的区别主要的/的区别
path.normalize("E:/test/a/b/c///d/test.js")
//E:\test\a\b\c\d\test.js
path.normalize("E:/test/a//////b/c/d/test.js/")
//E:\test\a\b\c\d\test.js\
path.normalize("E:/test/a/b/.../c/d/test.js////")
//E:\test\a\b\...\c\d\test.js\
path.normalize("E:/test/a///b/./c/d/test.js/..")
//E:\test\a\b\c\d
path.normalize("E:/test/a/b/../c/d/test.js/.")
//E:\test\a\c\d\test.js
path.join(pathStr1,pathStr2,pathStr3)
连接路径,将多个参数连接起来。可正确地使用当前系统的路径分隔符,Unix系统是"/",Windows系统是""。
node执行
path.join('test1', 'static_files/png/', '../gif/image.gif')
// test1\static_files\gif\image.gif
path.join('//test1', './static_files/png', '../gif/image.gif/')
// \\test1\static_files\gif\image.gif\
path.join('/test1/', './static_files/png', './gif/image.gif')
// \test1\static_files\png\gif\image.gif
vue打包后的区别在于会把//改成
path.join('//test1', './static_files/png', '../gif/image.gif/')
// /test1/static_files/gif/image.gif/
path.resolve([from ...], to)
node执行,执行文件路劲是E:00vueTesttest.js
path.resolve('/foo/bar', './baz')
// E:\foo\bar\baz
path.resolve('bar', 'baz')
// E:\00vueTest\bar\baz
path.resolve('/foo/bar', '/baz/baz2/')
// E:\baz\baz2
path.resolve('//foo/bar', '/baz/baz2/')
// \\foo\bar\baz\baz2
path.resolve('test1', 'static_files/png/', '../gif/image.gif')
// E:\00vueTest\test1\static_files\gif\image.gif
path.resolve('test1', './static_files/png', '../gif/image.gif')
// E:\00vueTest\test1\static_files\gif\image.gif
path.resolve('test1', './static_files/png', '../gif/image.gif')
// E:\test1\static_files\gif\image.gif
vue打包后的执行,是上面的结果,去掉前面的"E:"、"E:00vueTest"和如下
path.resolve('//foo/bar', '/baz/baz2/')
// /baz/baz2
path.isAbsolute(pathStr)
判断参数pathStr是否是绝对路径。
path.relative(from, to)
用于将绝对路径转为相对路径,返回从 from 到 to 的相对路径(基于当前工作目录)。
node执行,(和vue打包后的差别在于斜杠方向)
path.relative('/data/text/test/aaa','/data/text/impl/bbb')
// ..\..\impl\bbb
path.dirname(path)
返回路径中代表文件夹的部分
path.dirname('E:/test/a/b/c/d/test.js')
// E:/test/a/b/c/d
path.basename(pathStr,str)
pathStr:要处理的path
str:要过滤的字符
path.basename('/foo/bar/baz/aaa/bbb.html')
// bbb.html
path.basename('/foo/bar/baz/aaa/bbb.html', '.html')
// bbb
path.basename('/foo/bar/baz/aaa/', '.html')
// aaa
path.extname(pathStr)
返回路径中文件的后缀名,即路径中最后一个'.'之后的部分。
如果一个路径中并不包含'.'或该路径只包含一个'.' 且这个'.'为路径的第一个字符,则此命令返回空字符串。
path.extname('test.js') //.js
path.extname('test') //
path.extname('./test/aaa') //
path.parse(pathString)
返回路径字符串的对象。
node终端,vue打包不支持这方法,报错了TypeError: path.parse is not a function
path.parse('E:/test/a/b/c/d/test.js')
{
root: 'E:/',
dir: 'E:/test/a/b/c/d',
base: 'test.js',
ext: '.js',
name: 'test'
}
path.format(pathObject)
从对象中返回路径字符串,和 path.parse 相反。
node终端,vue打包不支持这方法,报错了TypeError: path.format is not a function
var pathObject = path.parse('E:/test/a/b/c/d/test.js')
path.format(pathObject)
// E:/test/a/b/c/d\test.js
属性
path.sep
平台的文件路径分隔符,'\' 或 '/'。
path.delimiter
平台的分隔符, ; or ':'.
path.posix
提供上述 path 的方法,不过总是以 posix 兼容的方式交互。
path.win32
提供上述 path 的方法,不过总是以 win32 兼容的方式交互。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。