Node.js를 사용하기 위해 선수 지식이 필요합니다. 바로 JS를 익히셔야합니다.
JS를 익히고 개념을 익히기 위해 필요한 학습자료를 추천하겠습니다.
서버가 아닙니다. 공식문서에서도 서버라는 단어는 언급 조차 없습니다.
기존에 html 파일에서 script를 작성하면 브라우저에서 html 파일을 읽고,
javascript를 읽었습니다. 어찌보면 html에 script가 종속되어 있다고 볼 수도 있습니다.
html이 없으면 js 파일을 읽을 수 없었으나, js 런타임인 node.js가 나오면서
js 파일을 작성하고 터미널에 node를 붙여 실행할 수 있게 되었습니다.
// test.js
console.log("this is js file");
터미널 입력
$ node test.js
실행결과
this is js file
node로 실행을 하게되면 V8 자바스크립트 엔진이 해석을해서 실행을 해준다.
node가 나옴으로해서 js는 html이나 브라우저의 종속성에서 벗어나게 된것입니다.
이로인해 JS가 웹, 앱, 데스크탑 프로그램, 게임 많은 것을 만들 수 있게되었습니다.
많은 개발자들이 프론트를 위해 JS를 배웠지만, 이제 JS 언어 하나로 모든 것이 가능하게 되었습니다.
typescript도 런타임이 있다. deno.js라고 있는데 참고하길 바랍니다.
[deno.js] https://deno.land/
노드의 내부는 C or C++로 쓰여져있다.
보통 대부분의 언어는 내부구조가 C or C++ 이라고 생각하시면 됩니다.
- libuv란? libuv는 이벤트 루프를 기반으로 하는 비동기 I/O를 지원하는 다중 플랫폼 C 라이브러리입니다.
- I/O란? 입력(Input)/출력(Output)의 약자로, 컴퓨터 및 주변장치에 대하여 데이터를 전송하는 프로그램, 운영 혹은 장치를 일컫는 말입니다.
libuv는 비동기 기능을 구현해주는 것인데,
JS, node가 뜬 이유는 싱글쓰레드 이면서 비동기인 모델이라서 그렇다. (엄청난 장점)
JAVA는 멀티쓰레딩 으로 초보들이 많이 어려워하던 반면, JS기반 JS 런타임인 node는
엄청나게 빠른 성능을 자랑하며, node는 초보마저 쉽게 비동기 프로그래밍을 할 수 있게 해주었다.