概述
提供了一些解决文件路劲的小工具 __dirname:是以后文件夹的绝对路径 用来解决文件操作路劲的相对路径问题 辨别在vue文件中应用和终端node中应用两种的区别 以下的代码是在window零碎上操作的后果 path.normalize(pathStr) path.join(pathStr1,pathStr2,pathStr3) vue打包后的区别在于会把改成 path.resolve([from ...], to) vue打包后的执行,是下面的后果,去掉后面的"E:"、"E:00vueTest"和如下 path.isAbsolute(pathStr) 判断参数pathStr是否是绝对路径。 path.relative(from, to) 用于将绝对路径转为相对路径,返回从 from 到 to 的相对路径(基于当前工作目录)。 path.dirname(path) path.basename(pathStr,str) path.extname(pathStr) path.parse(pathString) path.format(pathObject) path.sep
援用:var path = require("path")
补充:__dirname 和 __filename的应用
__filename:是以后文件的绝对路径
因为在文件操作中,相对路径绝对于执行 node
命令所处的目录
所以为了尽量避免这个问题,都倡议文件操作的相对路径都转为:动静的绝对路径
常配合path.join()和path.resolve()应用留神
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
办法
规范化门路,解决链接中的"..","."和""。多个斜杆会被替换成一个斜杆,门路末如蕴含斜杆,则包含一个斜杆
留神链接是否含'..'和'.' 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
连贯门路,将多个参数连接起来。可正确地应用以后零碎的门路分隔符,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
path.join('test1', '.static_filespng', '..gifimage.gif') test1static_filesgifimage.gif
node执行,执行文件路劲是E:00vueTesttest.jspath.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
path.resolve('foobar', 'bazbaz2') bazbaz2
node执行,(和vue打包后的差异在于斜杠方向)path.relative('datatexttestaaa','datatextimplbbb') ..\..\impl\bbb
返回门路中代表文件夹的局部path.dirname('E:testabcdtest.js') E:testabcd
pathStr:要解决的path
str:要过滤的字符path.basename('foobarbazaaabbb.html') bbb.htmlpath.basename('foobarbazaaabbb.html', '.html') bbbpath.basename('foobarbazaaa', '.html') aaa
返回门路中文件的后缀名,即门路中最初一个'.'之后的局部。
如果一个门路中并不蕴含'.'或该门路只蕴含一个'.' 且这个'.'为门路的第一个字符,则此命令返回空字符串。path.extname('test.js') .jspath.extname('test') path.extname('.testaaa')
返回门路字符串的对象。
node终端,vue打包不反对这办法,报错了TypeError: path.parse is not a functionpath.parse('E:testabcdtest.js'){ root: 'E:', dir: 'E:testabcd', base: 'test.js', ext: '.js', name: 'test'}
从对象中返回门路字符串,和 path.parse 相同。
node终端,vue打包不反对这办法,报错了TypeError: path.format is not a functionvar pathObject = path.parse('E:testabcdtest.js')path.format(pathObject) E:testabcd\test.js
属性
平台的文件门路分隔符,'\' 或 ''。
path.delimiter
平台的分隔符, ; or ':'.
path.posix
提供上述 path 的办法,不过总是以 posix 兼容的形式交互。
path.win32
提供上述 path 的办法,不过总是以 win32 兼容的形式交互。