1. 모듈 메커니즘
commonJS 모듈 메커니즘의 목적은 js를 구축하여 웹 서버, 데스크톱 프로그램, 브라우저 등에서 생태계를 형성하는 것입니다. Node js는 require를 사용하여 다른 파일을 도입하는 이 사양의 구현입니다. 마찬가지로 npm도 commonJS에서 정의한 패키지 사양을 따르므로 완전한 생태계를 형성합니다.
모듈 정의 및 내보내기
예를 들어, Circle.js라는 이름의 다음 파일이 있습니다
exports.getName = function(name) { return name }
모듈 로딩
var circle = require('/circle.js') console.log(circle.getName('WPY'))
모듈 로딩 전략
노드 모듈은 크게 두 가지 범주로 나눌 수 있습니다.
네이티브 모듈 및 커스텀 모듈은 HTTP 및 fs 모듈과 같이 노드 자체에 의해 정의되는 모듈입니다.
우리가 직접 정의한 패키지 모듈과 파일을 포함하여 사용자 정의 모듈 범주도 있습니다. 네이티브 모듈이든 커스텀 모듈이든 처음 로드된 후 노드별로 캐시되므로 두 번째 요청에는 오버헤드가 없습니다.
기본 모듈 로딩:
파일 이름을 구문 분석한 후 require() 메소드는 먼저 모듈 캐시에서 검색한 다음 노드의 기본 모듈에서 검색합니다
파일에서 로드
module.path 로드된 각 파일 모듈에 대해 모듈 객체가 생성될 때 paths 속성이 있습니다. 해당 경로는 가져온 모듈의 경로를 가리킵니다.
절대 경로 모듈을 요청할 때 가장 빠른 로딩 속도를 위해 node_module을 통과하지 않습니다.
비동기 프로그래밍
중급 기능
고급 함수는 함수를 매개변수나 반환 값으로 사용하는 함수입니다.
function foo(X) { return function() { return x } }
NODE가 가져온 가장 큰 특징은 기회주의적 이벤트 기반 Non-Blocking IO입니다.
비동기 프로그래밍 솔루션
1. 이벤트 게시/구독 모델
이벤트 리스너 모드는 비동기 프로그래밍에서 널리 사용됩니다. 이는 게시/구독 모드라고도 알려진 시간 제한 콜백 함수입니다.
//订阅 emitter.on("event1", function(message){ console.log(message) }) //发布 emitter.emit("event1", "I am message")
2.약속모드
Promise 객체에는 미완료 상태, 완료 상태, 실패 상태의 세 가지 상태가 있습니다.
Promise 객체에는 then 메소드가 있어야 합니다. then 메소드에는 다음 요구 사항이 있습니다
1. 완료 상태 및 오류 상태에 대한 콜백 방법을 허용합니다.
2. 기능만 허용되며 다른 개체는 무시됩니다
3. 체인 콜을 구현하기 위해 Promise 객체를 계속 반환합니다