타사 모듈 또는 NPM을 통해 설치된 로컬 모듈과 같은 다른 모듈은 공개 API를 노출시킵니다. 개발자가 수입 할 수 있도록. 좋다
코드 사본은 다음과 같습니다.
var mod = require ( 'module_name')
이 문장이 실행되면 NPM을 통해 설치된 내장 모듈 또는 모듈이 노드 내부에로드됩니다. 요구 함수는 노출 된 API가 함수, 배열 또는 임의의 유형 js 객체와 같은 함수, 객체 또는 속성 일 수있는 객체를 반환합니다.
노드 모듈의 로딩 및 캐싱 메커니즘은 다음과 같습니다.
1) 내장 모듈 (코어 모듈)로드
2) 파일 모듈로드 (파일 모듈)
3) 파일 디렉토리 모듈 (폴더 모듈)을로드합니다.
4) 모듈을 node_modules에로드하십시오
5)로드 된 모듈을 자동으로 캐시합니다
1. 내장 모듈을로드하십시오
Node의 내장 모듈은 이진 형식으로 컴파일되며 이름은 참조시 파일 경로 대신 직접 사용됩니다. 타사 모듈과 내장 모듈의 이름이 동일한 경우 내장 모듈은 동일한 이름으로 타사 모듈을 대체합니다. 따라서 이름 지정시, 내장 모듈과 동일한 이름을 갖지 않도록주의해야합니다. HTTP 모듈이있는 경우
코드 사본은 다음과 같습니다.
var http = require ( 'http')
반환 된 HTTP는 HTTP 기능 노드를 구현하는 내장 모듈입니다.
2. 파일 모듈을로드하십시오
절대 경로
코드 사본은 다음과 같습니다.
var mymod = require ( '/home/base/my_mod')
또는 상대 경로
코드 사본은 다음과 같습니다.
var mymod = require ( './ my_mod')
확장 ".js"는 여기에서 무시되고 다음은 피어입니다.
코드 사본은 다음과 같습니다.
var mymod = require ( './ my_mod')
var mymod = require ( './ my_mod.js')
3. 파일 디렉토리 모듈을로드하십시오
다음과 같은 다음과 같은 디렉토리를 직접 요구할 수 있습니다.
코드 사본은 다음과 같습니다.
var mymod = require ( './ 폴더')
이 시점에서 Node는 전체 폴더 디렉토리를 검색하고 Node는 폴더가 패키지라고 가정하고 패키지 정의 파일 Package.json을 찾으려고합니다. 폴더 디렉토리에 package.json 파일이 포함되어 있지 않으면 노드는 기본 기본 파일이 index.js라고 가정합니다. 즉, index.js가로드됩니다. index.js가 존재하지 않으면 로딩이 실패합니다.
디렉토리 구조가 다음과 같습니다
package.json은 다음과 같이 정의됩니다
코드 사본은 다음과 같습니다.
{
"이름": "팩",
"메인": "moda.js"
}
현재 요구 ( './ 폴더')는 모듈 moda.js를 반환합니다. package.json이 존재하지 않으면 모듈 index.js가 반환됩니다. index.js가 존재하지 않으면로드 예외가 발생합니다.
4. 모듈을 node_modules에로드하십시오
모듈 이름이 경로 또는 내장 모듈이 아닌 경우 Node는 현재 디렉토리의 Node_Modules 폴더에서 검색하려고합니다. 현재 디렉토리의 node_modules를 찾을 수없는 경우 노드는 부모 디렉토리의 Node_Modules에서 검색 한 다음 루트 디렉토리까지 재귀 적으로 계속됩니다.
NPM 명령을 사용하면 Node_Modules 디렉토리를 매우 편리하게 설치, 제거 및 업데이트 할 수 있습니다.
5.로드 된 모듈을 자동으로 캐시합니다
로드 된 모듈의 노드는 매번 다시 검색하지 않고도 캐시됩니다. 여기 예입니다
moda.js
코드 사본은 다음과 같습니다.
console.log ( '모듈 moda가로드 시작 ...')
내보내기 = function () {
Console.log ( 'Hi')
}
console.log ( '모듈 moda가로드되었습니다')
init.js
코드 사본은 다음과 같습니다.
var mod1 = require ( './ moda')
var mod2 = 요구 사항 ( './ moda')
Console.log (mod1 === mod2)
명령 줄 실행 :
노드 init.js
다음과 같이 입력하십시오
두 번 필요하지만 moda.js는 여전히 한 번만 실행된다는 것을 알 수 있습니다. mod1 및 mod2는 동일합니다. 즉, 두 참조는 동일한 모듈 객체를 가리 킵니다.