path.vmdk와 path.vmdk 이름이 __인 path.vmdk
둘 다 사용할 때 차이가 있습니까? path.join
그리고.path.resolve
와 함께__dirname
Node.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.resolve
nodejs에서 제공하는 경로 모듈의 두 가지 다른 메서드 또는 함수입니다.
여기서 두 경로 모두 경로 목록을 수락하지만 결과, 즉 이러한 경로를 처리하는 방법에 차이가 있습니다.
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
'programing' 카테고리의 다른 글
*.ipa 파일을 빌드하는 데 사용된 프로필을 확인하는 방법은 무엇입니까? (0) | 2023.08.09 |
---|---|
하위 요소를 변경하지 않고 요소의 텍스트를 변경하려면 어떻게 해야 합니까? (0) | 2023.08.09 |
@EnableFeignClients 및 @FeignClients가 'FeignContext' 자동 배선 시 실패함 No SuchBeanException (0) | 2023.07.20 |
Oracle의 TimeStamp 열에서 시간 부분 추출 (0) | 2023.07.20 |
스프링 부트의 유닛 테스트 또는 통합 테스트 (0) | 2023.07.20 |