次の呼び出しには何らかの違いがありますか?
path.join(__dirname, 'app')
対
path.resolve(__dirname, 'app')
どちらを優先すべきでしょうか?
ベストアンサー1
2 つの関数は、 で始まるセグメントを/
非常に異なる方法で処理します。join
は、それを前の引数と連結するだけですが、これをルート ディレクトリとして扱い、以前のパスをすべて無視します。これは、各引数を指定してresolve
実行した結果と考えてください。cd
path.join('/a', '/b') // Outputs '/a/b'
path.resolve('/a', '/b') // Outputs '/b'
もう一つ注意すべき点は、path.resolve
常に絶対 URL が生成され、このパスを解決するために作業ディレクトリがベースとして使用されることです。ただし、__dirname
いずれにせよ絶対パスであるため、この場合これは問題になりません。
どちらを使用するかについては、答えは、 で始まるセグメントをどのよう/
に動作させたいかによって異なります。単純に結合するべきでしょうか、それとも新しいルートとして機能するべきでしょうか。
他の引数がハードコードされている場合は、実際には問題になりません。その場合は、(a) この行が将来どのように変更されるか、(b) コード内の他の場所とどの程度一貫しているかを考慮する必要があります。