Nodejs-Path模块学习

概述

提供了一些解决文件路劲的小工具
援用: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.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\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.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.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 兼容的形式交互。

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理