JavaScript 사양(ECMAScript)은 대부분의 프로그램에서 사용할 수 있는 완전한 표준 라이브러리를 정의하지 않습니다. CommonJS는 일련의 JavaScript 표준 라이브러리 사양을 제공합니다. 노드는 CommonJS 사양을 구현합니다.
모듈 기본
Node에서 모듈과 파일은 일대일 대응을 갖습니다. 모듈을 정의합니다:
모듈 로딩
노드는 로드된 모듈을 버퍼링하여 다시 로드하는 오버헤드를 방지합니다.
test.js 모듈을 여러 번 로드
접미사 없이 파일을 로드하면 Node는 접미사를 추가하고 로드하려고 시도합니다.
1..js(자바스크립트 소스 파일)
2..노드(C/C 확장 모듈)
3..json(JSON 파일)
모듈에는 여러 가지 주요 범주가 있습니다.
1. 핵심 모듈. 핵심 모듈은 Node로 컴파일되었으며 소스 코드의 lib 디렉토리에서 이러한 핵심 모듈을 찾을 수 있습니다. 공통 핵심 모듈: net, http, fs 모듈 등
2. 파일 모듈. 파일 모듈은 위에서 본 Circle.js
와 같은 상대 또는 절대 경로를 통해 로드됩니다.3. 맞춤 모듈. 사용자 정의 모듈은 node_modules 디렉터리에 있으며, npm을 통해 설치하는 다양한 모듈은 node_modules 디렉터리에 있습니다.
항상 핵심 모듈이 먼저 로드됩니다. 맞춤 모듈 http가 있으면 맞춤 모듈 http 대신 핵심 모듈 http가 로드됩니다. 사용자 정의 모듈을 로드할 때 먼저 현재 디렉터리에서 node_modules 디렉터리를 찾은 다음 상위 디렉터리 아래에서 node_modules 디렉터리를 찾은 다음 루트 디렉터리까지 계속 찾습니다.
require 로드된 모듈이 파일이 아닌 디렉터리인 경우, 그러한 디렉터리를 패키지라고 합니다. 패키지에 package.json(패키지 설명 파일)이라는 파일이 있습니다. 예:
여기서 main은 로드해야 하는 모듈을 나타냅니다. package.json이 패키지에 없거나 기본 모듈이 package.json에 지정되지 않은 경우 Node는 index.js, index.node 및 index.json을 로드하려고 시도합니다.
JavaScript 모듈을 로드할 때 로드된 모듈은 다음 함수로 래핑됩니다.
각 JavaScript 모듈에서 액세스하는 모듈, 내보내기, __filename, __dirname 등은 실제로 함수 매개변수를 통해 전달됩니다. 이러한 래핑으로 인해 모듈의 지역 변수는 외부에서 액세스할 수 없습니다. 하지만 때로는 다음과 같이 이해하기 어려운 문제가 있습니다.
test1.js
test2.js
다음 두 모듈을 로드하세요.
내보내기는 매개변수로 모듈에 전달됩니다. 자연스럽게 내보내기 개체에 속성(또는 메서드)을 추가할 수 있습니다. 내보내기(예: 내보내기 = x)에 값을 직접 할당하면 형식만 변경됩니다. 실제 매개변수가 아닌 매개변수입니다. 따라서
1. 내보내기에 속성을 추가할 때 내보내기를 사용하세요
2. 내보내기에 값을 할당할 때 module.exports
팩
CommonJS 사양에 따르면 전체 패키지에는 다음이 포함되어야 합니다.
1.package.json 패키지 설명 파일
2.bin 바이너리 파일 디렉터리
3.lib 자바스크립트 코드 디렉토리
4.doc 문서 디렉토리
5.테스트 테스트 코드 디렉토리
NPM은 Node.js용 패키지 관리 도구입니다. 일반적인 사용법:
명령 문서 보기:
설치 명령에 대한 문서를 참조하세요.
패키지 설치:
패키지 제거: