[Node. js] node 의 require 는 도대체 어떻게 일 하 는 거 야?

2741 단어 Modulenoderequire
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.jshi 디 렉 터 리 가 동시에 존재 할 때?사용 hi 디 렉 터 리 를 먼저 찾 습 니 다. 디 렉 터 리 가 위 형식 으로 결 과 를 찾 지 못 하면 hi.js 이 파일 을 사용 합 니 다.
    많은 사람들 이 (본인 포함) modules 모듈 의 소 개 를 진지 하 게 보지 못 했 기 때문에 node_modules 폴 더 에 대해 잠재의식 적 인 가설 을 가지 고 있다. node_modules 에 저 장 된 것 은 모두 폴 더 모듈 이 므 로 하나의 js 파일 을 넣 을 수 없다 고 생각한다.사실 node_modules 폴 더 에는 npm install 에서 온 폴 더 모듈 뿐만 아니 라 하나의 js 파일 을 배치 하여 하나의 모듈 을 만 들 수 있다.
    예 를 들 어 하나의 test.js 파일 을 node_modules 폴 더 에 넣 으 면 코드 에서 직접 require('test') 를 사용 하여 npm 모듈 을 참조 하 는 것 과 같 습 니 다.간단 한 모듈 을 위 한 폴 더 를 만 들 지 않 고 경로 없 이 참조 할 수 있다 는 것 이 장점 이다.
    사실 node require 에 대해 필요 한 지식 이 있 습 니 다. 예 를 들 어 캐 시 인용, 서로 인용 하 는 문제 등 은 modules 문서 에서 상세 한 설명 이 있 고 여 기 는 번역 하지 않 습 니 다.

    좋은 웹페이지 즐겨찾기