이 글에서는 nodejs의 require 실행 과정을 자세히 소개합니다. 도움이 필요한 친구들이 모두 참고할 수 있기를 바랍니다.
최근 node를 보다가 모듈 도입 과정을 일부러 알아봤습니다. 오늘은 리뷰 기록을 작성해보겠습니다. 지금 이 글을 읽고 있는 여러분에게 도움이 되었으면 좋겠습니다
핵심 모듈 또는 내장 모듈(즉, 노드 자체 fs, http, vm...) 자세한 내용은 공식 웹사이트 API를 참조하세요
타사 모듈 또는 자체 패키지 npm 패키지는 개인 또는 공용 라이브러리에 배치됩니다(npm install을 통해 npm에 설치 및 사용됨)
파일 모듈, 내부 프로젝트 파일, 상대 경로 또는 절대 경로 방법 사용 require
[권장 학습: "nodejs tutorial"]
여기서 디버깅 도구는 함께 제공되는 것입니다. vscode
1. 파일을 읽고 require 메소드 return mod.require(path)
2를 입력하고 Module.prototype.require가 실제로 있는지 확인하세요. 실행, (여기서 id는 처음에 있는 경로입니다.) 음~ 왜 Module._load를 다시 호출했습니까? 별거 아닙니다. 계속 진행합시다
3. id, this, /* isMain */ false) 경로에 따라 모듈을 로드합니다.
4. new Module()을 입력하고 빈 개체를 만듭니다. this.exports = {}: 이것이 우리가 궁극적으로 원하는 내보내기 개체입니다. (다른 모듈에서 참조되는 모듈은 여기서 자세히 연구하지 않습니다. )
5. Module._cache[filename] 3단계에서 파싱된 경로가 키로 사용되며, 4단계에서 생성된 객체의 값을 수행하여 캐시 배열에 저장합니다. 계속하세요! !
6.module.load(), 이 함수
findLongestRegisteredExtension을 입력하여 파일 이름 접미사를 계산합니다.
Module._extensions[extension]( 이, 파일 이름)에 따르면 다른 로딩 방법을 호출하기 위해 다른 접미사로 변경(여기서는 전략 모드가 사용됨)
여기서 맞은 것은 .js입니다. 이 방법에서는 fs.readFileSync를 사용하여 파일을 동기적으로 읽은 다음 module._compile()을 매개변수로 호출합니다
7. ) 입력하다 , 그리고 content가
8을 실행하기 위해 WrapSafe(filename, content, this)의 매개변수로 사용되는 것을 발견했으며, 그런 다음 WrapSafe()를 입력합니다. ps: 여기서는 이전 버전에 대해 직접 이야기할 것이며 실행은 다음과 같습니다. 이해하기 쉽습니다
First Module.wrap이 호출되고 함수가 입력됩니다. 노드 모듈은 필수(함수(){ })로 패키지되어 독립 모듈을 형성합니다.! !
위 내용은 nodejs에서 모듈을 가져오는 방법은 무엇입니까? require 실행 프로세스 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!