Node.js는 크롬 V8엔진을 기반으로 한 자바스크립트 런타임이다.
크롬 V8 엔진
- 익스플로러의 독주를 막을 수 있었던 크롬의 고성능 엔진(매우빠름)
- 웹브라우저에서만 사용되던 엔진을 웹브라우저 바깥에서 사용해보자!
- 그런데 이제 asynchronous event-driven을 곁들인
-> 런타임 환경으로서의 node.js 등장
Node.js의 장점
- 프론트엔드 개발자가 자바,C# 등을 학습하지 않아도 자바스크립트로 서버 개발 가능
- 자바스크립트의 쉬운 문법
- asynchronous event-driven 아키텍쳐 방식으로 작동되기 때문에 한번에 여러 작업을 처리할 수 있어 입출력이 많은 프로그램에 적합함
- npm과 같이 매우 큰 개방형 패키지 생태계를 활용할 수 있어 다른 사람이 개발한 유용한 모듈을 사용할 수 있음
Node.js의 단점
- 단일 스레드 방식이므로 CPU 집약적인 작업에 대해서는 성능이 안좋아질 수 있음
-> 다만 '멀티 스레드와 비슷한 방식'으로 코드를 작성할 수 있음(worker_thread)
- 콜백 지옥
-> 비동기 방식의 단점으로 비동기함수 호출 후 수행하는 콜백함수들 간의 작업으로 코드가 복잡해지고 유지보수가 어려워질 수 있음
-> Promise, async await에 대한 학습이 필요
출처 - https://pso62.tistory.com/entry/NodeJS%EC%9D%98-%EC%9E%A5%EC%A0%90%EA%B3%BC-%EB%8B%A8%EC%A0%90