JavaScript 사양 (ECMAScript)은 대부분의 프로그램에 적용될 수있는 전체 표준 라이브러리 세트를 정의하지 않습니다. CommonJS는 JavaScript 표준 라이브러리 사양 세트를 제공합니다. 노드는 commonjs 사양을 구현합니다.
모듈 기본 사항
노드에서 모듈과 파일은 하나씩 해당합니다. 모듈을 정의합니다.
코드 사본은 다음과 같습니다.
// circle.js
var pi = math.pi;
// 기능 영역 내보내기
Exports.area = function (r) {
반환 pi * r * r;
}
// 내보내기 기능 회로 회의
Exports.circumference = function (r) {
반환 2 * pi * r;
};
여기에서 내보내는 기능은 내보내기 개체에 추가됩니다. 모듈의 로컬 변수는 외부 적으로 액세스 할 수 없습니다 (예 : 위의 예에서 PI 변수). Module Circle.js를로드하려면 전화가 필요합니다.
코드 사본은 다음과 같습니다.
var circle = require ( './ circle.js');
Console.log ( '반경 4 원의 영역은'입니다.
+ circle.area (4));
언급했듯이 모듈에는 모듈 자체를 나타내는 모듈 객체가 있으며 내보내기는 모듈의 속성입니다.
모듈 로딩
노드 재 장전 오버 헤드를 피하기 위해 노드가로드 된 모듈을 버퍼링합니다.
코드 사본은 다음과 같습니다.
// test.js
Console.log ( "I 'm here");
로드 모듈 test.js 여러 번
코드 사본은 다음과 같습니다.
// 한 번만 "I 'm here"만 출력합니다
요구 ( './ test');
요구 ( './ test');
로딩 파일에 접미사가없는 경우 노드는 접미사와로드를 추가하려고합니다.
1..js (JavaScript 소스 파일)
2..node (C/C ++ 확장 모듈)
3..json (JSON 파일)
몇 가지 주요 유형의 모듈이 있습니다.
1. 핵심 모듈. 코어 모듈은 노드로 컴파일되었으며 소스 디렉토리에서 이러한 핵심 모듈을 찾을 수 있습니다. 공통 핵심 모듈 : NET, HTTP, FS 모듈 등
2. 파일 모듈. 파일 모듈은 위에서 본 Circle.js와 같은 상대적 또는 절대 경로를 통해로드됩니다.
3. 모듈을 사용자 정의합니다. 사용자 정의 모듈은 Node_Modules 디렉토리에 있습니다. NPM을 통해 설치 한 다양한 모듈은 Node_Modules 디렉토리에 배치됩니다.
코어 모듈은 항상 먼저로드됩니다. 사용자 정의 모듈 HTTP가있는 경우로드 할 때 Core Module HTTP가 여전히 사용자 정의 모듈 HTTP 대신로드됩니다. 사용자 정의 모듈을로드 할 때는 먼저 현재 디렉토리에서 node_modules 디렉토리를 찾은 다음 부모 디렉토리에서 node_modules 디렉토리를 찾은 후 루트 디렉토리까지 찾으십시오.
로드 된 모듈이 파일이 아니라 디렉토리 인 경우 이러한 디렉토리를 패키지라고합니다. 패키지에는 package.json (패키지 설명 파일)이라는 파일이 있습니다.
코드 사본은 다음과 같습니다.
{ "name": "some-library",
"메인": "./lib/some-library.js"}}
여기서 메인은로드 해야하는 모듈을 나타냅니다. package.json이 package 또는 package.json에 존재하지 않으면 기본 모듈을 지정하지 않으면 Node가 index.js, index.node, index.json을로드하려고합니다.
JavaScript 모듈을로드 할 때로드 된 모듈이 함수로 래핑됩니다.
코드 사본은 다음과 같습니다.
함수 (모듈, 내보내기, __filename, __dirname, ...) {
자바 스크립트 모듈
}
모듈, 내보내기, __filename, __dirname 등 각 JavaScript 모듈에서 액세스하는 것은 실제로 기능 매개 변수를 통해 전달됩니다. 이러한 종류의 패키지로 인해 모듈의 로컬 변수는 외부에 액세스 할 수 없습니다. 그러나 때로는 이해하기 어려운 문제가 있습니다.
test1.js
코드 사본은 다음과 같습니다.
수출 = {
이름 : 'name5566',
}
test2.js
코드 사본은 다음과 같습니다.
module.exports = {
이름 : 'name5566',
}
이 두 모듈을로드하십시오.
코드 사본은 다음과 같습니다.
var test1 = 요구 사항 ( './ test1.js');
Console.log (test1.name); // 한정되지 않은
var test2 = 요구 사항 ( './ test2.js');
Console.log (test2.name); // 이름 5566
내보내기는 모듈에 매개 변수로 전달됩니다. Exports.x를 통해 Exports Object에 속성 (또는 방법)을 자연스럽게 추가 할 수 있지만 내보내기에 값을 직접 할당하면 (예 : Exports = X) 실제 매개 변수가 아닌 공식 매개 변수의 값이 변경됩니다.
1. 수출에 속성을 추가 할 때 수출을 사용하십시오
2. 내보내기에 값을 할당 할 때 module.exports를 사용하십시오
가방
CommonJS 사양에 따르면 전체 패키지에는 다음이 포함되어야합니다.
1.package.json 패키지 설명 파일
2.BIN 바이너리 파일 디렉토리
3. Lib JavaScript 코드 디렉토리
4. 문서 디렉토리
5. 테스트 코드 디렉토리
NPM은 노드를위한 패키지 관리 도구입니다. 일반적인 사용 :
명령 문서보기 :
코드 사본은 다음과 같습니다.
NPM 도움말 설치
명령 설치에 대한 설명서를보십시오.
패키지 설치 :
코드 사본은 다음과 같습니다.
NPM Redis 설치
Redis 패키지를 설치하십시오. 설치 명령은 현재 디렉토리에 node_modules 디렉토리에 패키지를 설치합니다.
패키지 제거 :
코드 사본은 다음과 같습니다.
NPM은 Redis를 제거합니다
Redis 패키지를 제거하십시오. 제거 명령은 현재 디렉토리에서 패키지를 제거합니다.