How Node Addon Work


`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`에 담겨있다.
2. `Native Extention`를 메모리에 `바인딩`하여 `fs` 모듈을 사용할 준비를 마친다.
3. `fs` 모듈이 `require`되고, `Native Extension`의 메소드를 호출한다.
4. 호출된 메소드는 `LibUv`에 의해 동기 또는 비동기로 수행된다.
### `Native Extention`은 `V8`의 메소드를 사용하면서 `Node.JS`와 통신한다


![](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F4f9f4c92-f8cd-42ac-a4f2-909520c7659a%2FUntitled.png?table=block&id=a38dd79a-d041-4a71-8952-336b2e1920f9&cache=v2)
Native Extention이 수행되는 순서


> [[DeepDive] NodeJS C++ Addon 깊게 입문하기](https://aerocode.net/341)





