Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Node基础篇之路径处理path #16

Open
kekobin opened this issue Aug 19, 2019 · 0 comments
Open

Node基础篇之路径处理path #16

kekobin opened this issue Aug 19, 2019 · 0 comments

Comments

@kekobin
Copy link
Owner

kekobin commented Aug 19, 2019

posix、windows的区别

path 模块的默认操作因 Node.js 应用程序运行所在的操作系统而异。 具体来说,当在 Windows 操作系统上运行时, path 模块将假定正在使用 Windows 风格的路径。windows下是'\',linux下是'/'。
统一成posix(通用):path.posix.[方法],如:path.posix.join,path.posix.resolve...
如果要使用windows风格,则使用path.win32.[方法]

path.join(xxx,xxx,xxx...多个参数):路径连接

常用于node程序中连接拼接的路径:
如:动态获得某个路径

function getFile(dir1, dir2, filename) {         
	const filepath = path.join(dir1, dir2, filename)         
}         
getFile('/cdn', 'test', 'a.js') // /cdn/test/a.js         

path.basename()

返回 path 的最后一部分. 相当于获取一个路径的文件名或者它的当前文件夹名(注意是"名字")

path.basename('/aaa/ddd/vvv/ddd.html') // ddd.html        
path.basename('/aaa/ddd/vvv/ddd') // ddd        
path.basename('/aaa/ddd/vvv/ddd/') // ddd        
path.basename('/aaa/ddd/vvv/ddd.html', '.html') // ddd        

path.dirname(_path)

返回 path 的目录名。无论当前路径尾部是文件名还是文件夹名,但会返回它前面的部分。相当于
_path.split(/${尾部名称})[0],注意这里是包含'/'的。

path.dirname('/aaa/ddd/vvv/ffrfrf/a.js') // '/aaa/ddd/vvv/ffrfrf'       
path.dirname('/aaa/ddd/vvv/ffrfrf/a') // '/aaa/ddd/vvv/ffrfrf'       
path.dirname('/aaa/ddd/vvv/ffrfrf/a/') // '/aaa/ddd/vvv/ffrfrf'       

这样使用它和path.basename就可以获取一个路径的文件夹名和文件名了.

// 如 /aaa/vvv/bbb/index.html      
const _path = '/aaa/vvv/bbb/index.html';        
path.basename(_path);    // 'index.html'        
path.dirname(_path);    // '/aaa/vvv/bbb'      

__dirname也能获得一样的结果。

path.extname(path)

返回 path 的扩展名,从最后一次出现 .(句点)字符到 path 最后一部分的字符串结束。如果没有.则返回空.

path.extname('/dfef/fef/index.html') // .html

path.normalize(path)

规范化路径.当找到多个连续的路径段分隔字符时(例如 POSIX 上的 /、Windows 上的 \ 或 /),则它们将被替换为单个平台特定的路径段分隔符(POSIX 上的 /、Windows 上的 \)。 尾部的分隔符会保留。

path.normalize('/ddd/fefe//fefe//gegsadfad/test.png') // '/ddd/fefe/fefe/gegsadfad/test.png'

可以看到路径里面多处有两个'/',经过规范后变成了一个.

path.parse(path)

返回一个对象,为路径各部分的信息,即通过它能够拿到一个路径的根、目录、文件名、扩展名。

path.parse('/dfe/ddd/fefef/aaa.js')     
{      
  root: '/',     
  dir: '/dfe/ddd/fefef',     
  base: 'aaa.js',     
  ext: '.js',     
  name: 'aaa'      
 }     

相当于path.dirname(),path.basename(),path.extname的综合,当需要其中的某几个时特别好用.

path.resolve([...paths])

将相对路径转换为绝对路径,绝对路径的基准是当前文件所在的路径.
假设当前操作的a.js的绝对路径是:/data/webapps/app/a.js

path.resolve('aaa','bbb','ccc') // '/data/webapps/app/aaa/bbb/ccc'     
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant