>  기사  >  웹 프론트엔드  >  Nodejs 미니멀 입문 튜토리얼(1): 모듈 메커니즘_node.js

Nodejs 미니멀 입문 튜토리얼(1): 모듈 메커니즘_node.js

WBOY
WBOY원래의
2016-05-16 16:32:521081검색

JavaScript 사양(ECMAScript)은 대부분의 프로그램에서 사용할 수 있는 완전한 표준 라이브러리를 정의하지 않습니다. CommonJS는 일련의 JavaScript 표준 라이브러리 사양을 제공합니다. 노드는 CommonJS 사양을 구현합니다.

모듈 기본

Node에서 모듈과 파일은 일대일 대응을 갖습니다. 모듈을 정의합니다:

코드 복사 코드는 다음과 같습니다.

// Circle.js
var PI = Math.PI;

//기능 영역 내보내기
수출.지역 = 기능(r) {
PI * r * r 반환;
}

//함수 둘레 내보내기
수출.원주 = 함수(r) {
2 * PI * r;을 반환합니다.
};

여기에서 내보내기 개체로 내보내야 하는 기능을 추가합니다. 모듈의 지역 변수는 외부에서 액세스할 수 없습니다(예: 위 예의 PI 변수). Circle.js 모듈을 로드하려면 require를 호출하세요.
코드 복사 코드는 다음과 같습니다.

var Circle = require('./circle.js');
console.log('반지름이 4인 원의 넓이는 '
            Circle.area(4));

그런데 모듈에는 모듈 자체를 나타내는 모듈 객체가 있고, 내보내기는 모듈의 속성입니다.

모듈 로딩

노드는 로드된 모듈을 버퍼링하여 다시 로드하는 오버헤드를 방지합니다.

코드 복사 코드는 다음과 같습니다.

// test.js
console.log("저는 여기 있습니다");

test.js 모듈을 여러 번 로드

코드 복사 코드는 다음과 같습니다.

// "I'm here"
한 번만 출력 require('./test');
require('./test');

접미사 없이 파일을 로드하면 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": "./lib/some-library.js" }

여기서 main은 로드해야 하는 모듈을 나타냅니다. package.json이 패키지에 없거나 기본 모듈이 package.json에 지정되지 않은 경우 Node는 index.js, index.node 및 index.json을 로드하려고 시도합니다.

JavaScript 모듈을 로드할 때 로드된 모듈은 다음 함수로 래핑됩니다.

코드 복사 코드는 다음과 같습니다.

함수(모듈, 내보내기, __filename, __dirname, ...) {
자바스크립트 모듈
}

각 JavaScript 모듈에서 액세스하는 모듈, 내보내기, __filename, __dirname 등은 실제로 함수 매개변수를 통해 전달됩니다. 이러한 래핑으로 인해 모듈의 지역 변수는 외부에서 액세스할 수 없습니다. 하지만 때로는 다음과 같이 이해하기 어려운 문제가 있습니다.

test1.js

코드 복사 코드는 다음과 같습니다.

수출 = {
이름: 'Name5566',
}

test2.js

코드 복사 코드는 다음과 같습니다.

module.exports = {
이름: 'Name5566',
}

다음 두 모듈을 로드하세요.

코드 복사 코드는 다음과 같습니다.

var test1 = require('./test1.js');
console.log(test1.name); // 정의되지 않음
var test2 = require('./test2.js');
console.log(test2.name); // 이름5566

내보내기는 매개변수로 모듈에 전달됩니다. 자연스럽게 내보내기 개체에 속성(또는 메서드)을 추가할 수 있습니다. 내보내기(예: 내보내기 = x)에 값을 직접 할당하면 형식만 변경됩니다. 실제 매개변수가 아닌 매개변수입니다. 따라서

1. 내보내기에 속성을 추가할 때 내보내기를 사용하세요
2. 내보내기에 값을 할당할 때 module.exports

를 사용하세요.

CommonJS 사양에 따르면 전체 패키지에는 다음이 포함되어야 합니다.

1.package.json 패키지 설명 파일
2.bin 바이너리 파일 디렉터리
3.lib 자바스크립트 코드 디렉토리
4.doc 문서 디렉토리
5.테스트 테스트 코드 디렉토리

NPM은 Node.js용 패키지 관리 도구입니다. 일반적인 사용법:

명령 문서 보기:

코드 복사 코드는 다음과 같습니다.

npm 도움말 설치

설치 명령에 대한 문서를 참조하세요.

패키지 설치:

코드 복사 코드는 다음과 같습니다.

npm 설치 redis

Redis 패키지를 설치합니다. install 명령은 현재 디렉터리의 node_modules 디렉터리에 패키지를 설치합니다.

패키지 제거:

코드 복사 코드는 다음과 같습니다.

npm redis 제거

Redis 패키지를 제거합니다. 제거 명령은 현재 디렉터리에서 패키지를 제거합니다.
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.