[Node. js] node 의 require 는 도대체 어떻게 일 하 는 거 야?
node. js / io. js 를 사용 한 적 이 있다 면 반드시
require
이 함수 로 다른 모듈 (자신 이 쓴 것 또는 타인 의 것) 을 인용 할 것 이다.그러나 많은 사람들 이 node 에서 require (문서 에서 modules 라 는 부분) 에 대한 소 개 를 진지 하 게 보지 않 았 다.여기 서 모두 가 이미 잘 알 고 있 을 지도 모 르 는 상황 을 소개 한다.
파일 로드
node 에 서 는 require 로 파일 을 불 러 올 때 파일 이름 이 존재 하지 않 는 상황 에서 순서대로
.js
, node
, .json
세 개의 접미사 이름 을 붙 여 오 류 를 시도 합 니 다.파일 이름 을 참조 하여 대응 하 는 파일 이 존재 하지 않 는 상황 을 말 합 니 다.예 를 들 어 코드 에서 require('./hello')
를 사용 하여 현재 디 렉 터 리 아래 hello
파일 을 참조 할 때, 이 파일 이 존재 하 는 지 hello
라 는 이름 의 파일 이 존재 하 는 지 를 기본적으로 찾 습 니 다. 이 파일 이 존재 한다 면, 접 두 사 를 추가 하려 는 것 이 아니 라, 이 파일 의 내용 을 직접 읽 습 니 다.또한 주의해 야 할 것 은 이 접 두 사 를 js 파일 로 해석 하 는 것 입 니 다. 안에 어떤 코드 가 있 든 간 에.파일 을 인용 할 때 경로 문 제 는
.
과 /
상대 경로 나 절대 경로 로 해석 합 니 다.node 에서모듈 로드
require
을 사용 할 때 상대 적 이거 나 절대적 인 경 로 를 가지 고 있 지 않 으 면 node 는 node_modules
에서 필요 한 모듈 을 찾 으 려 고 시도 합 니 다.node 찾기 node_modules
는 현재 디 렉 터 리 에서 루트 디 렉 터 리 를 계속 찾 는 방식 입 니 다.즉, 이 폴 더 가 있 는 지 node_modules
를 한 단계 한 단계 먼저 확인 하고 있 으 면 안에서 해당 모듈 을 찾 고 찾 지 못 하면 이전 디 렉 터 리 에 들 어가 서 찾 는 것 이다.모듈
node_modules
다음 폴 더 가 모듈 인 것 을 제외 하고 다른 곳 에 이러한 폴 더 를 모듈 로 설치 한 다음 에 상대 적 이거 나 절대적 인 경로 로 참조 할 수 있 습 니 다.두 가지 방식 (홈 페이지 에서 말 한 세 가지, 사실은 두 가지) 이 있 습 니 다. 폴 더 를 하나의 모듈 로 참조 할 수 있 습 니 다.
package.json
파일 을 만 들 고 "main": "abc.js"
방식 을 사용 하면 require
디 렉 터 리 아래 abc.js
파일 을 참조 합 니 다.package.json
이 파일 이 없 을 때 폴 더 에서 index.js
또는 index.node
두 파일 을 찾 으 려 고 시도 합 니 다.있 으 면 해당 파일 을 사용 합 니 다.! 같은 등급 에 같은 이름 의 폴 더 와 파일 이 존재 할 때 어떻게 하 느 냐 는 질문 이 있 습 니 다.우선, 똑 같은 이름 을 사용 하 는 파일 과 폴 더 는 같은 등급 에 동시에 존재 할 수 없습니다.그 다음으로
hi.js
와 hi
디 렉 터 리 가 동시에 존재 할 때?사용 hi
디 렉 터 리 를 먼저 찾 습 니 다. 디 렉 터 리 가 위 형식 으로 결 과 를 찾 지 못 하면 hi.js
이 파일 을 사용 합 니 다.많은 사람들 이 (본인 포함) modules 모듈 의 소 개 를 진지 하 게 보지 못 했 기 때문에
node_modules
폴 더 에 대해 잠재의식 적 인 가설 을 가지 고 있다. node_modules
에 저 장 된 것 은 모두 폴 더 모듈 이 므 로 하나의 js 파일 을 넣 을 수 없다 고 생각한다.사실 node_modules
폴 더 에는 npm install
에서 온 폴 더 모듈 뿐만 아니 라 하나의 js 파일 을 배치 하여 하나의 모듈 을 만 들 수 있다.예 를 들 어 하나의
test.js
파일 을 node_modules
폴 더 에 넣 으 면 코드 에서 직접 require('test')
를 사용 하여 npm 모듈 을 참조 하 는 것 과 같 습 니 다.간단 한 모듈 을 위 한 폴 더 를 만 들 지 않 고 경로 없 이 참조 할 수 있다 는 것 이 장점 이다.사실 node
require
에 대해 필요 한 지식 이 있 습 니 다. 예 를 들 어 캐 시 인용, 서로 인용 하 는 문제 등 은 modules 문서 에서 상세 한 설명 이 있 고 여 기 는 번역 하지 않 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Ansible Module - Filestate: absent directory file ← default hard link touch absent : 디렉토리를 recursive하게 삭제한다. 심볼링 링크도 삭제한다. directory : 디렉토리가 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.