Nodejs-Path模块学习

8次阅读

共计 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.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 兼容的形式交互。

正文完
 0