How Node Addon Work

Creator
Creator
Seonglae ChoSeonglae Cho
Created
Created
2020 Jun 18 2:59
Editor
Edited
Edited
2022 Jun 23 8:2
Refs
Refs
Node.JS는 결국 V8 엔진에 의하여 동작하기 때문에, Node.JS가 의존하는 V8엔진의 헤더와 소스코드를 그대로 사용하여 코드를 작성하면, Node.JS에서 사용가능한 C/C++코드가 완성됩니다.

이렇게 완성된 C/C++코드를 포함시켜 Node.JS를 다시 컴파일해도 상관이 없지만, 일반적으로는 동적 링크 라이브러리Dynamically Linked Library, DLL의 형태로 컴파일한 뒤 require()함수를 사용하여 동적으로 불러오는 방식을 취하며, 이렇게 만들어진 DLL을 Native Extention이라고 합니다.

구체적으로 Native Extention이 작동하는 방식은 다음과 같습니다.
  1. fs 모듈의 핵심 구현은 C언어로 구현된 Native Extention에 담겨있다.
  1. Native Extention를 메모리에 바인딩하여 fs 모듈을 사용할 준비를 마친다.
  1. fs 모듈이 require되고, Native Extension의 메소드를 호출한다.
  1. 호출된 메소드는 LibUv에 의해 동기 또는 비동기로 수행된다.

Native Extention은 V8의 메소드를 사용하면서 Node.JS와 통신한다

 
 
notion image
Native Extention이 수행되는 순서
 
 
 
 

Recommendations