node.js에서 path.join을 사용해야합니까? 할 것입니다. 그러나이

누구나 알고 있듯이 Windows는 백 슬래시로 경로를 수행하고 Unix는 슬래시로 경로를 수행합니다. node.js는 path.join()항상 올바른 슬래시를 사용하도록 제공 합니다. 예를 들어 유닉스를 쓰는 대신에 'a/b/c'당신이 path.join('a','b','c')대신 할 것입니다.

그러나이 차이에도 불구하고 경로를 정규화하지 않고 (예 : path.join 사용) a/b/cnode.js 와 같은 경로를 작성하면 Windows에서 스크립트를 실행하는 데 아무런 문제가없는 것 같습니다 .

덮어 쓰는 것 path.join('a','b','c')보다 이점 이 'a/b/c'있습니까? 둘 다 플랫폼에 관계없이 작동하는 것으로 보입니다 …



답변

Windows 파일 시스템은 슬래시를 경로 구분 기호로 사용하는 데 아무런 문제가 없습니다 (DOS 시절부터 그랬습니다). 유일한 문제는 Windows 명령 줄 프로세서 (또는보다 구체적으로 Windows 기본 명령 줄 유틸리티)가 슬래시를 경로 구성 요소가 아닌 옵션 지정자로 해석하는 경향이 있다는 것입니다. 따라서 서브 프로세스로 실행되는 Windows 명령에 경로를 전달해야하는 경우 백 슬래시 경로가 필요합니다. 또한 경로를 반환하는 Windows API 호출 (및 Windows API를 호출하는 고급 언어의 메서드)은 백 슬래시를 사용하므로 하위 프로세스로 전달하지 않더라도 정규화해야합니다.


답변

path.join 주어진 경로가 알 수없는 출처 (예 : 사용자 입력, 타사 API 등)에서 온 경우 발생할 수있는 불필요한 구분 기호를 처리합니다.

그래서 path.join('a/','b') path.join('a/','/b'), path.join('a','b')그리고 path.join('a','/b')모든 줄 것이다 a/b.

그것을 사용하지 않으면, 일반적으로 슬래시가 없거나 하나만 있다는 것을 알면서 결합 된 경로의 시작과 끝에 대해 ​​기대하게됩니다.


답변

내가 사용 path.join구분이 올바른 장소에있는 폴더를 보장하기 위해 반드시이 백 슬래시 대 앞으로 사용하도록 할 수 있습니다. 예를 들면 다음과 같습니다.

path.join("/var/www", "test")

www와 테스트 사이에 구분 기호를 올바르게 삽입합니다 /var/www/test


답변

짧은 답변:

모든 fs.*기능 (예 : fs.open등)이 경로 이름을 처리합니다. 따라서 path.join자신 을 사용 하고 코드를 읽을 수 없게 만들 필요는 없습니다 .

긴 대답 :

백 슬래시 또는 슬래시 를 고려한 Windows 용 특수 RegExps가 있는 모든 fs.*함수 호출이 호출 됩니다. 다음에서 소스 코드를보고 직접 확인할 수 있습니다.path._makeLong(path)path.resolve(path)\/


답변