NodeJs簡明教程(5)

NodeJs簡明教程將從零開始學習NodeJs相關知識,助力JS開發者構建全棧開發技術棧!linux

本文是NodeJs簡明教程的第五篇,將介紹NodeJs path模塊相關的基本操做。macos

path 模塊提供用於處理文件路徑和目錄路徑的實用工具。windows

注意:path模塊只是處理文件路徑,說白了就是字符串處理,跟文件系統無關工具

讀取路徑的文件名

path.basename() 方法返回 path 的最後一部分,相似於 Unix 的 basename 命令。 尾部的目錄分隔符將被忽略。學習

  1. 返回帶擴展名ui

    const path = require('path');
    
    console.log(path.basename('/usr/local/a.txt'))
    
    // 輸出 a.txt
    複製代碼
  2. 返回不帶擴展名spa

    const path = require('path');
    
    console.log(path.basename('/usr/local/a.txt','.txt'))
    
    // 輸出 a
    複製代碼

讀取文件路徑的目錄名

path.dirname() 方法返回 path 的目錄名,相似於 Unix 的 dirname 命令。 尾部的目錄分隔符將被忽略。 path.extname() 方法返回 path 的擴展名,從最後一次出現 .(句點)字符到 path 最後一部分的字符串結束。 若是在 path 的最後一部分中沒有 . ,或者若是 path 的基本名稱(參閱 path.basename())除了第一個字符之外沒有 .,則返回空字符串。code

const path = require('path');

console.log(path.dirname('/usr/local/a.txt'))

// 輸出 /usr/local
複製代碼

獲取文件擴展名

path.extname() 方法返回 path 的擴展名,從最後一次出現 .(句點)字符到 path 最後一部分的字符串結束。cdn

const path = require('path');

console.log(path.extname('/usr/local/a.txt'));

// 輸出 .txt
複製代碼

檢測路徑是否爲絕對路徑

path.isAbsolute() 方法檢測 path 是否爲絕對路徑。server

const path = require('path');
// linux || macosx
console.log(path.isAbsolute('/usr/local')); // 輸出 true
console.log(path.isAbsolute('usr/local')); // 輸出 false
// windows
console.log(path.isAbsolute('//server')); // 輸出 true
console.log(path.isAbsolute('\\\\server')); // 輸出 true
console.log(path.isAbsolute('c:\windows')); // 輸出 true
console.log(path.isAbsolute('foo/bar')); // 輸出 false
複製代碼

生成規範化的路徑

path.join() 方法使用平臺特定的分隔符做爲定界符將全部給定的 path 片斷鏈接在一塊兒,而後規範化生成的路徑。 零長度的 path 片斷會被忽略。 若是鏈接的路徑字符串是零長度的字符串,則返回 '.',表示當前工做目錄。

const path = require('path');

console.log(path.join('/a','b','c','..')); // 輸出 /a/b

console.log(path.join('.','a','b','..','c')); // 輸出 a/c
複製代碼

解析路徑

path.parse() 方法返回一個對象,其屬性表示 path 的重要元素。 尾部的目錄分隔符將被忽略。 返回對象屬性以下: dir 目錄 root 根目錄 base 帶擴展名的文件名或者目錄名(最後一級是目錄的狀況下) name 文件名(不帶擴展名)或目錄名 ext 文件擴展名(若是是目錄則爲空字符串)

const path = require('path');

path.parse('/home/user/dir/file.txt');
// 返回:
// { root: '/',
// dir: '/home/user/dir',
// base: 'file.txt',
// ext: '.txt',
// name: 'file' }
複製代碼

獲取兩個路徑的相對路徑

path.relative() 方法根據當前工做目錄返回 from 到 to 的相對路徑。

const path = require('path');

console.log(path.relative('/data/orandea/test/aaa', '/data/orandea/impl/bbb')); 
// 輸出 ../../impl/bbb
複製代碼

獲取規範化的絕對路徑

path.resolve() 方法將路徑或路徑片斷的序列解析爲絕對路徑。

const path = require('path');

console.log(path.resolve('/foo/bar', './baz')); // 輸出 /for/bar/baz
console.log(path.resolve('/foo/bar', '/tmp/file/');); // 輸出 /tmp/file
console.log(path.resolve('a','b','../c/img.gif'));
// 假設當前工做目錄 /home/wwwroot,上述語句輸出 /home/wwwroot/a/c/img.gif

console.log(path.resolve()); // 假設當前工做目錄 /home/wwwroot 輸出 /home/wwwroot
複製代碼

結語

path模塊的主要就是處理路徑相關,常常和fs模塊共同使用。

歡迎關注Nodejs之路公衆號得到持續更新以及在線答疑幫助。

二維碼
相關文章
相關標籤/搜索