nodejs插件之一:path模块

上一章简述了经过vue-cli脚手架建立项目中有关于webpack配置的部分。在咱们学习的时候,能够发现里面有许多插件的运用。而nodejs中插件也是比较重要的部分,因此这一章我就记录学习的一些在build目录下遇到插件。但本人英语废,对于一些没有中文只有英文介绍的插件我只能尽可能百度翻译,若有错请提出。若是有英语厉害的那就请大大帮忙翻译介绍啊~~~~html


相对路径和绝对路径简单理解

path与路径有很大的关系,在学习path以前咱们不妨简单地路径学习一下相对路径和绝对路径的区别。
一、相对路径就是以当前文件为基准进行一级级目录指向被引用的资源文件。vue

  • ../ 表示当前文件所在的目录的上一级目录
  • ./ 表示当前文件所在的目录(能够省略)
  • / 表示当前站点的根目录(域名映射的硬盘目录)

二、绝对路径是指文件在硬盘上真正存在的路径。node

  • 例如:'E:\shishans\blogsss\src\assets\logo.png'

Path的使用

path在nodejs运用的仍是比较多的,在路径的处理上十分好用。并且它是node自带的,因此并不须要用npm install 的方法下载。webpack

1. path.basename(path[, ext]):返回路径的最后部分。我的认为这个用来获取文件名或者url中带的参数。web

  • path:string 必填 目标路径
  • ext:string 可选 过滤掉以ext结尾的字符串(去扩展名)
  • return:string 返回string字符串
//只有参数path
var joinPath = path.basename('/foo/bar/baz/asdf/quux.html')
console.log(joinPath) /* 输出quux.html */

//带参数ext
//过滤掉以ext结尾的字符串
//转化成正则表达式:/(ext)$/g相似
var joinPath = path.basename('/foo/bar/baz/asdf/quux.html', '.html')
console.log(joinPath) /* 输出quux */
console.log(joinPath) /* 若是路径是以‘quux.html?id=1’结尾
                       * 那么将不会过滤,输出quux.html?id=1 */

2. path.delimiter:提供特定于平台的路径分隔符,能够配合Stirng.split(path.delimiter)使用。正则表达式

  • ‘;’ for Windows(封号)
  • ‘:’ for POSIX(冒号)
//很是搞笑的是,我在windows环境下用vue-cli建立的webpack项目中src/main.js文件中验证时,path.delimiter表明的符号恰好项目,我也是一脸懵呀!

图片描述

3. path.dirname(path):与basename相对,返回除最后一部分的前面部门目录vue-cli

  • path:String 必填
  • return:String
/*返回'E:/shishans//blogsss//src'*/
console.info(path.dirname('E:/shishans/blogsss/src/assets'))

4. path.extname(path)获取扩展名npm

  • path:String 必填
  • return:String 扩展名
//返回.html
console.info(path.extname('index.html'))

5. path.format(pathObject):返回路径字符串
pathObject里面包括:windows

  • dir:String 目录
  • root:String 根目录
  • base:String 等于name + ext
  • name:String 文件名
  • ext:String 扩展名

注意:pathObject里面全部的属性同是出现时,相似做用的属性有优先级:(1).若是存在dir则root忽视;(2).若是存在base则忽视name和ext。api

//若是存在dir则root忽视
path.format({
  root: '/ignored',
  dir: '/home/user/dir',
  base: 'file.txt'
});
// Returns: '/home/user/dir/file.txt'

//若是存在base则忽视name和ext
path.format({
  root: '/',
  base: 'file.txt',
  ext: 'ignored'
});
// Returns: '/file.txt'

6. path.isAbsolute(path):判断path是不是绝对路径

  • return:Boolean

图片描述

7. path.normalize(path):将非标准路径转化成标准路径,string为要转换的路径字符串。转化规则以下:

  • 解析路径中的".."和"."字符串,返回解析后的标准路径。若是以./开头自动省略,例:console.info(path.normalize('.//a/b//d')) //输出a/b/c;若是以../开头则不省略,例:console.info(path.normalize('..//a/b//d')) //输出../a/b/c;
  • 将多个斜杠字符串转换为一个斜杠字符串,将window操做系统中的反斜杠字符串转换为正斜杠字符串。这2个比较简单就不讨论了。
  • 若是路径字符串以斜杠字符串结尾,则会在转换后的完整路径字符串末尾保留该斜杠字符串。例:console.info(path.normalize('..//a/b//d//')) //输出../a/b/c/
  • 若是中间出现‘..’,则靠近‘/../’前面的路径忽略;但‘/./’只会忽略其自己。例:console.info(path.normalize('.//a/b//d/..//c/.//f')) //输出a\b\c\f

图片描述

8. path.join([path1], [path2], [...]):将多个参数值字符串结合成一个路径字符串,该方法的主要用途在于,会正确使用当前系统的路径分隔符,Unix系统是"/",Windows系统是"\"。

图片描述

9. path.parse(path):与path.format(pathObject)相反,format是根据dir、root、base、name和ext合成路径字符串,而parse是根据路径分解出来。

  • return:pathObject

图片描述

10. path.relative(from, to):该方法用于获取两个路径之间的相对关系.对于这个方法我也不是怎么理解,个人理解是:from和to去掉相同的路径(即公用的目录)根据from不一样部分转化'../',而后获取to不一样的部分。

理解:想象一下若是在aaa目录下的文件如何访问bbb下文件,咱们须要用../不断地返回到2者公共的目录,再去找bbb所在的目录

图片描述

11. path.resolve([...paths]):将一系列路径解析成绝对路径。

  • resolve解析是从右到左的。
  • 多个path链接时,字符串的起始位置都没有'/',则全部的字符串接连。若是其中一个字符串的起始位置有'/',这再也不向前链接。
  • ./与字符串起始位置没有任何东西时,是一致的状况。
  • ../会跳过前面最近的一个字符串的链接

图片描述


path的属性

对于这个我也不了解,只有path.posix在utils.js文件中曾经看见过。多是一种兼容方式吧?!
图片描述


参考

菜鸟:http://www.runoob.com/nodejs/...
nodejs官网中Path部分:https://nodejs.org/api/path.h...

相关文章
相关标签/搜索