2017-09-26 65 views
0

順便說一下,foobar將字符串文字path.join(__目錄名稱, 「富」, 「酒吧」)與path.join(__目錄名稱, 「富/酒吧」)

我見過一堆使用存儲庫的兩個,"foo/bar""foo", "bar"

我做了benchmark js用下面的代碼基準(我也做了gist

suite.add('foo/bar', function() { 
    path.join(__dirname, 'foo/bar') 
}) 
.add('foo, bar', function() { 
    path.join(__dirname, 'foo', 'bar') 
}) 
.on('complete', function() { 
    console.log('Fastest is ' + this.filter('fastest').map('name')); 
}) 
.run({ 'async': true }); 

而且foo/bar也較快。但我仍然看到很多代碼,如path.join(__dirname, '..', '..', 'node_modules')

那麼有什麼理由使用path.join(__dirname, 'foo', 'bar')

我也在談論path.resolve

回答

1

有使用path.join()三個主要的好處。

  1. 它會自動檢查尾隨分隔符,所以在結果路徑中永遠不會得到兩個分隔符。

  2. 它自動使用平臺特定的路徑分隔符(這是Windows上的反斜槓)。

  3. 加入具有上述邏輯的段後,它將路徑歸一化,解決任何...段。

因此,當您需要任何此功能時,您肯定會使用path.join()。如果您不需要任何這些功能,那麼您可以採取任何方式(使用自己的手動路徑結構或使用path.join())。

+0

因此,使用'path.join(__ dirname,「../ path/to/dir」)''是完全可以的嗎? – ocboogie

+0

@ocboogie - 是的。 – jfriend00

+0

爲什麼downvote?如果你只是在沒有解釋的情況下進行無路可退的行爲,那麼任何人都很難知道如何改進答案。 – jfriend00