上一章简述了通过vue-cli脚手架创建项目中有关于webpack配置的部分。在我们学习的时候,可以发现里面有许多插件的运用。而nodejs中插件也是比较重要的部分,所以这一章我就记录学习的一些在build目录下遇到插件。但本人英语废,对于一些没有中文只有英文介绍的插件我只能尽量百度翻译,如有错请提出。如果有英语厉害的那就请大大帮忙翻译介绍啊~~~~
相对路径和绝对路径简单理解
path与路径有很大的关系,在学习path之前我们不妨简单地路径学习一下相对路径和绝对路径的区别。
1、相对路径就是以当前文件为基准进行一级级目录指向被引用的资源文件。
- ../ 表示当前文件所在的目录的上一级目录
- ./ 表示当前文件所在的目录(可以省略)
- / 表示当前站点的根目录(域名映射的硬盘目录)
2、绝对路径是指文件在硬盘上真正存在的路径。
- 例如:'E:\shishans\blogsss\src\assets\logo.png'
Path的使用
path在nodejs运用的还是比较多的,在路径的处理上十分好用。而且它是node自带的,所以并不需要用npm install 的方法下载。
1. path.basename(path[, ext]):返回路径的最后部分。个人认为这个用来获取文件名或者url中带的参数。
- 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相对,返回除最后一部分的前面部门目录
- path:String 必填
- return:String
/*返回'E:/shishans//blogsss//src'*/
console.info(path.dirname('E:/shishans/blogsss/src/assets'))
4. path.extname(path)获取扩展名
- path:String 必填
- return:String 扩展名
//返回.html
console.info(path.extname('index.html'))
5. path.format(pathObject):返回路径字符串
pathObject里面包括:
- dir:String 目录
- root:String 根目录
- base:String 等于name + ext
- name:String 文件名
- ext:String 扩展名
注意:pathObject里面所有的属性同是出现时,类似作用的属性有优先级:(1).如果存在dir则root忽视;(2).如果存在base则忽视name和ext。
//如果存在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...
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。