Node.JS는 결국 V8 엔진에 의하여 동작하기 때문에, Node.JS가 의존하는 V8엔진의 헤더와 소스코드를 그대로 사용하여 코드를 작성하면, Node.JS에서 사용가능한 C/C++코드가 완성됩니다.이렇게 완성된
C/C++코드를 포함시켜 Node.JS를 다시 컴파일해도 상관이 없지만, 일반적으로는 동적 링크 라이브러리Dynamically Linked Library, DLL의 형태로 컴파일한 뒤 require()함수를 사용하여 동적으로 불러오는 방식을 취하며, 이렇게 만들어진 DLL을 Native Extention이라고 합니다.구체적으로
Native Extention이 작동하는 방식은 다음과 같습니다.fs모듈의 핵심 구현은C언어로 구현된Native Extention에 담겨있다.
Native Extention를 메모리에바인딩하여fs모듈을 사용할 준비를 마친다.
fs모듈이require되고,Native Extension의 메소드를 호출한다.
- 호출된 메소드는
LibUv에 의해 동기 또는 비동기로 수행된다.
Native Extention은 V8의 메소드를 사용하면서 Node.JS와 통신한다

Native Extention이 수행되는 순서

Seonglae Cho![[DeepDive] NodeJS C++ Addon 깊게 입문하기](https://www.notion.so/image/https%3A%2F%2Fk.kakaocdn.net%2Fdn%2FcALM00%2FbtqCD8APV9Z%2FSUSQI5BVUk3uZpahWDIqTk%2Fimg.jpg?table=block&id=fb2fd605-ea38-45a2-9bfa-c38ea122648a&cache=v2)