programing

path.vmdk와 path.vmdk 이름이 __인 path.vmdk

kingscode 2023. 8. 9. 22:02
반응형

path.vmdk와 path.vmdk 이름이 __인 path.vmdk

둘 다 사용할 때 차이가 있습니까? path.join그리고.path.resolve와 함께__dirnameNode.js의 절대 경로를 해결하기 위해?

이와 같이 사용할 때 이 중 하나를 선호해야 합니까(절대 경로 해상도는 사용 사례의 90%)?

예.

const absolutePath = path.join(__dirname, some, dir);

대.

const absolutePath = path.resolve(__dirname, some, dir);

두 가지 방법 모두 경로를 정규화합니다.

예, 기능 간에 차이가 있지만 이 경우 사용하는 방법은 동일한 결과를 초래합니다.

path.join두 경로를 병합하여 정규화된 경로를 반환합니다.절대 경로를 반환할 수 있지만 반드시 항상 그렇지는 않습니다.

예를 들어:

path.join('app/libs/oauth', '/../ssl')

하기로 결정됨app/libs/ssl

path.resolve반대로 절대 경로로 해결됩니다.

예를 들어, 다음을 실행할 때:

path.resolve('bar', '/foo');

반환되는 경로는 다음과 같습니다./foo그것이 구성될 수 있는 첫 번째 절대 경로이기 때문입니다.

그러나 실행하는 경우:

path.resolve('/bar/bae', '/foo', 'test');

반환되는 경로는 다음과 같습니다./foo/test오른쪽에서 왼쪽으로 형성될 수 있는 첫 번째 절대 경로이기 때문입니다.

루트 디렉터리를 지정하는 경로를 제공하지 않는 경우 다음 경로에 지정됩니다.resolve함수가 현재 작업 디렉터리에 추가됩니다.그래서 만약 당신의 작업 디렉토리가/home/mark/project/:

path.resolve('test', 'directory', '../back');

하기로 결정됨

/home/mark/project/test/back

사용.__dirname원본 파일이 들어 있는 디렉터리의 절대 경로입니다.사용할 때path.resolve또는path.join다음과 같은 경로를 지정하면 동일한 결과가 반환됩니다.__dirname그런 경우에는 정말로 선호도의 문제일 뿐입니다.

const absolutePath = path.join(__dirname, some, dir);

대.

const absolutePath = path.resolve(__dirname, some, dir);

path.join연결됩니다.__dirname값과 연결된 현재 파일의 디렉토리 이름입니다.some그리고.dir플랫폼별 구분 기호를 사용합니다.

반면에.

path.resolve윌프로세스__dirname,some그리고.dir즉, 처리하여 오른쪽에서 왼쪽으로 추가합니다.

의 값 중 하나라도some또는dir루트 경로에 해당하면 이전 경로가 생략되고 루트로 간주하여 처리 중지됩니다.

개념을 더 잘 이해하기 위해 다음과 같이 두 가지를 조금 더 자세히 설명하겠습니다.

path.join그리고.path.resolvenodejs에서 제공하는 경로 모듈의 두 가지 다른 메서드 또는 함수입니다.

여기서 두 경로 모두 경로 목록을 수락하지만 결과, 즉 이러한 경로를 처리하는 방법에 차이가 있습니다.

path.join플랫폼별 구분 기호를 사용하여 지정된 모든 경로 세그먼트를 함께 연결한 다음 결과 경로를 정규화합니다.그 동안에path.resolve()절대 경로가 생성될 때까지 각 후속 경로를 접두사로 붙여 오른쪽에서 왼쪽으로 경로 순서를 처리합니다.

인수가 제공되지 않은 경우

다음 예제는 두 개념을 명확하게 이해하는 데 도움이 됩니다.

이름은 제파이름은입니다.index.js는 그고현작디는리토렉입니다.E:\MyFolder\Pjtz\node

const path = require('path');

console.log("path.join() : ", path.join());
// outputs .
console.log("path.resolve() : ", path.resolve());
// outputs current directory or equivalent to __dirname

결과

λ node index.js
path.join() :  .
path.resolve() :  E:\MyFolder\Pjtz\node

path.resolve()방법은 절대 경로를 출력하는 반면,path.join()되지 않을 현재 .를합니다.

일부 루트 경로가 인수로 전달되는 경우

const path=require('path');

console.log("path.join() : " ,path.join('abc','/bcd'));
console.log("path.resolve() : ",path.resolve('abc','/bcd'));

결과 i

λ node index.js
path.join() :  abc\bcd
path.resolve() :  E:\bcd

path.join(), " " " 은 플랫폼별 구분자로 연결합니다.path.resolve()절대 경로가 생성될 때까지 각 후속 경로를 접두사로 붙여 오른쪽에서 왼쪽으로 경로 순서를 처리합니다.

에서의 문서에서.path.resolve:

경로가 루트 디렉터리로 확인되지 않으면 결과 경로가 정규화되고 후행 슬래시가 제거됩니다.

그렇지만path.join해서 슬래시 뒤를 따라갑니다.

그렇게

__dirname = '/';
path.resolve(__dirname, 'foo/'); // '/foo'
path.join(__dirname, 'foo/'); // '/foo/'

가장 단순한 용어:

를 할 때path.resolve()과 같은 일을 .

from left to right-

  • 가장 에 있는 를 가장오른있매변연결수다니합를개는으로 합니다./루트 경로와 직접 연결하여 절대 경로를 만듭니다(예문 확인).
  • 그리고 나서 어떤 것이든 연결합니다./

예를들면

path.resolve('/a', 'b', 'c');     returns    C:\a\b\c
path.resolve('/a', '/b', 'c');    returns    C:\b\c
path.resolve('/a', '/b', '/c');   returns    C:\c


을 사용하는 .join() 모든 변수를 합니다. 이 변수에는 "" " " " " " 가 있는지 를 나타냅니다./그렇지 않으면.

path.join("/a", "b", "/c", "d")   simply returns   "\a\b\c\d"

언급URL : https://stackoverflow.com/questions/39110801/path-join-vs-path-resolve-with-dirname

반응형