vue-cli/node中path.join、path.resolve詳解


var path = require("path") //引入node的path模塊

Node.js中,__dirname總是指向被執行js文件的絕對路徑,所以當你在/d1/d2/myScript.js文件中寫了__dirname,它的值就是/d1/d2

  • __dirname: 總是返回被執行的 js 所在文件夾的絕對路徑
  • __filename: 總是返回被執行的 js文件的絕對路徑

一:path.join()

path.join()方法顧名思義用於連接路徑

path.join('/a', '/b', '/c') // /a/b/c

path.join('a', 'b', 'c') // a/b/c

path.join('/a', 'b','..' 'c') // /a/c ".."會向前跳一個目錄 

 

二、path.resolve() 將路徑或者路徑片段解析成絕對路徑

path.resolve('/foo/bar', './baz') // /foo/bar/baz
path.resolve('/foo/bar', 'baz') // /foo/bar/baz
path.resolve('/foo/bar', '/baz') // /baz
path.resolve('/foo/bar', '../baz') // /foo/baz
path.resolve('home','/foo/bar', '../baz') // /foo/baz
path.resolve('home','./foo/bar', '../baz') // /home/foo/baz
path.resolve('home','foo/bar', '../baz') // /home/foo/baz
 
path.resolve('a', 'b', 'c') // /Users/siyuan/Desktop/example/node測試/a/b/c//    因為沒有遇到第一個絕對路徑,所以會一直向上解析(根目錄路徑/a/b/c)

傳入路徑從右至左解析,遇到第一個絕對路徑解析(字符以 / 開頭)停止,不會拼接到前面的路徑(因為拼接到此已經是一個絕對路徑);

若以 ../ 開頭,拼接前面的路徑,且不含最后一節路徑;

若以 ./ 開頭 或者沒有符號 則拼接前面路徑;

需要注意的是:如果在處理完所有給定的 path 片段之后還未生成絕對路徑,則再加上當前工作目錄。

三、總結:

通過上面栗子我們可以看到join方法只是拼接路徑,也不會像resolve那樣遇見/根就直接把整個路徑替換跳,而只有在標准的..../相對路徑的時候跳出目錄。

說白了就是resolve方法是對根路徑的而直接變化的,而join方法只會將所有參數拼接,最后形成一個完整的路徑(當然遇見..or../會跳出當前目錄)。

這個在實際開發中配置還是用到的地方很多的,有時候我們寫字符串../src/index.html不生效時,就可以試試resove or join哦。




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM