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...

相關文章
相關標籤/搜索