概述

提供了一些解决文件路劲的小工具
援用: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:\00vueTestE:\00vueTest\test.js在vue文件中应用,打包后目录E:\00vueTest\helloworld\dist\js,浏览器关上index.html文件后,打印如下:index.js

以下的代码是在window零碎上操作的后果

办法

path.normalize(pathStr)
规范化门路,解决链接中的"..","."和""。多个斜杆会被替换成一个斜杆,门路末如蕴含斜杆,则包含一个斜杆
留神链接是否含'..'和'.'

 node的执行成果,浏览器打印的区别次要的的区别path.normalize("E:testabcdtest.js") E:\test\a\b\c\d\test.jspath.normalize("E:testabcdtest.js")E:\test\a\b\c\d\test.js\path.normalize("E:testab...cdtest.js")E:\test\a\b\...\c\d\test.js\path.normalize("E:testab.cdtest.js..")E:\test\a\b\c\dpath.normalize("E:testab..cdtest.js.")E:\test\a\c\d\test.js

path.join(pathStr1,pathStr2,pathStr3)
连贯门路,将多个参数连接起来。可正确地应用以后零碎的门路分隔符,Unix零碎是"",Windows零碎是""。
node执行

path.join('test1', 'static_filespng', '..gifimage.gif') test1\static_files\gif\image.gifpath.join('test1', '.static_filespng', '..gifimage.gif') \\test1\static_files\gif\image.gif\path.join('test1', '.static_filespng', '.gifimage.gif') \test1\static_files\png\gif\image.gif

vue打包后的区别在于会把改成

path.join('test1', '.static_filespng', '..gifimage.gif') test1static_filesgifimage.gif

path.resolve([from ...], to)
node执行,执行文件路劲是E:00vueTesttest.js

path.resolve('foobar', '.baz') E:\foo\bar\bazpath.resolve('bar', 'baz') E:\00vueTest\bar\bazpath.resolve('foobar', 'bazbaz2') E:\baz\baz2path.resolve('foobar', 'bazbaz2') \\foo\bar\baz\baz2path.resolve('test1', 'static_filespng', '..gifimage.gif') E:\00vueTest\test1\static_files\gif\image.gifpath.resolve('test1', '.static_filespng', '..gifimage.gif') E:\00vueTest\test1\static_files\gif\image.gifpath.resolve('test1', '.static_filespng', '..gifimage.gif') E:\test1\static_files\gif\image.gif

vue打包后的执行,是下面的后果,去掉后面的"E:"、"E:00vueTest"和如下

path.resolve('foobar', 'bazbaz2') bazbaz2

path.isAbsolute(pathStr)

判断参数pathStr是否是绝对路径。

path.relative(from, to)

用于将绝对路径转为相对路径,返回从 from 到 to 的相对路径(基于当前工作目录)。
node执行,(和vue打包后的差异在于斜杠方向)

path.relative('datatexttestaaa','datatextimplbbb') ..\..\impl\bbb

path.dirname(path)
返回门路中代表文件夹的局部

path.dirname('E:testabcdtest.js') E:testabcd

path.basename(pathStr,str)
pathStr:要解决的path
str:要过滤的字符

path.basename('foobarbazaaabbb.html') bbb.htmlpath.basename('foobarbazaaabbb.html', '.html') bbbpath.basename('foobarbazaaa', '.html') aaa

path.extname(pathStr)
返回门路中文件的后缀名,即门路中最初一个'.'之后的局部。
如果一个门路中并不蕴含'.'或该门路只蕴含一个'.' 且这个'.'为门路的第一个字符,则此命令返回空字符串。

path.extname('test.js') .jspath.extname('test') path.extname('.testaaa') 

path.parse(pathString)
返回门路字符串的对象。
node终端,vue打包不反对这办法,报错了TypeError: path.parse is not a function

path.parse('E:testabcdtest.js'){  root: 'E:',  dir: 'E:testabcd',  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:testabcdtest.js')path.format(pathObject) E:testabcd\test.js

属性

path.sep
平台的文件门路分隔符,'\' 或 ''。
path.delimiter
平台的分隔符, ; or ':'.
path.posix
提供上述 path 的办法,不过总是以 posix 兼容的形式交互。
path.win32
提供上述 path 的办法,不过总是以 win32 兼容的形式交互。