共计 3154 个字符,预计需要花费 8 分钟才能阅读完成。
概述
提供了一些解决文件路劲的小工具
援用: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:testabcdtest.js")
E:\test\a\b\c\d\test.js
path.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\d
path.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.gif
path.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.gifvue 打包后的区别在于会把改成
path.join('test1', '.static_filespng', '..gifimage.gif')
test1static_filesgifimage.gifpath.resolve([from ...], to)
node 执行,执行文件路劲是 E:00vueTesttest.js
path.resolve('foobar', '.baz')
E:\foo\bar\baz
path.resolve('bar', 'baz')
E:\00vueTest\bar\baz
path.resolve('foobar', 'bazbaz2')
E:\baz\baz2
path.resolve('foobar', 'bazbaz2')
\\foo\bar\baz\baz2
path.resolve('test1', 'static_filespng', '..gifimage.gif')
E:\00vueTest\test1\static_files\gif\image.gif
path.resolve('test1', '.static_filespng', '..gifimage.gif')
E:\00vueTest\test1\static_files\gif\image.gif
path.resolve('test1', '.static_filespng', '..gifimage.gif')
E:\test1\static_files\gif\image.gifvue 打包后的执行,是下面的后果,去掉后面的 "E:"、"E:00vueTest" 和如下
path.resolve('foobar', 'bazbaz2')
bazbaz2path.isAbsolute(pathStr)
判断参数 pathStr 是否是绝对路径。
path.relative(from, to)
用于将绝对路径转为相对路径,返回从 from 到 to 的相对路径(基于当前工作目录)。
node 执行,(和 vue 打包后的差异在于斜杠方向)
path.relative('datatexttestaaa','datatextimplbbb')
..\..\impl\bbbpath.dirname(path)
返回门路中代表文件夹的局部
path.dirname('E:testabcdtest.js')
E:testabcd
path.basename(pathStr,str)
pathStr: 要解决的 path
str: 要过滤的字符
path.basename('foobarbazaaabbb.html')
bbb.html
path.basename('foobarbazaaabbb.html', '.html')
bbb
path.basename('foobarbazaaa', '.html')
aaa
path.extname(pathStr)
返回门路中文件的后缀名,即门路中最初一个 '.' 之后的局部。
如果一个门路中并不蕴含 '.' 或该门路只蕴含一个 '.' 且这个 '.' 为门路的第一个字符,则此命令返回空字符串。
path.extname('test.js') .js
path.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 兼容的形式交互。