[REAL Deep Dive into JS] 3. 자바스크립트 개발 환경과 실행방법

young_pallete·2022년 8월 21일
0

REAL JavaScript Deep Dive

목록 보기
3/46
post-custom-banner

🌈 시작하며

이번에는 <모던 자바스크립트 딥다이브>를 읽고, 자바스크립트 개발 환경과 실행방법에 대해 다시금 생각해보려 하는데요.

아무래도 이 부분은 NodeJS 이야기에 초점을 맞춰 이야기할 것 같습니다.
이유는 비주얼 스튜디오 코드 및 플러그인이라던지에 관한 설명은 이미 다른 글들이 많아서 사족이라는 생각 때문입니다.

다만, 하나라도 제대로 이해하고 넘어가는 것이 중요하기에, 저는 이번 목표를 NodeJS를 좀 더 이해하는 것으로 하고, 만족하려 합니다.


🚦 본론

최근에 여행을 갔었는데요. 저는 날씨 하나에도 상당한 마음의 변화가 있더라구요.
날씨가 맑으면 그 날 여행은 상당히 기분이 좋게 유지가 되고, 날씨가 흐리면 뭔가 텐션이 낮아진다고 해야 할까요?

이처럼 사람은 환경에 영향을 많이 받게 됩니다.
그런데, 개발도 마찬가지에요. 어떤 환경에서 개발을 하느냐가, 곧 생산성을 바꾸기도 하고 사람들과의 협업에 있어서도 차질이 있을 수 있거든요.

우리는 오늘 자바스크립트의 개발 환경을 이야기할 것인데요. 저는 그 중 Node.js에 초점을 맞출 계획입니다.
모든 이야기를 하면 좋겠지만, 저 역시 이 책을 읽으면서 선택과 집중을 해야 하고, 그 중 저는 Node.js라는 목적지에만 초점을 맞추기로 했어요.

만약 이 여정이 마음에 들지 않으시다면, 이 글은 생략하셔도 좋을 거 같아요.
다음 챕터에서 만나요! 👐🏻

Node.js란

우리 이전 챕터에서 간단히 자바스크립트에 대해 설명을 했죠. 자바스크립트는 웹 브라우저 환경에서 실행하는 프로그래밍 언어입니다.

그런데 프로그래머와 개발자들은 아쉬웠어요. 브라우저 상에서 코드를 테스팅하기는 정말 쉬운 일이 아니었기 때문이죠.

따라서 이러한 아쉬움을 갖고 있던 중, Ryan Dahl이라는 한 개발자가(이분이 최근 뜨거운 감자였던 Deno의 창시자죠) 2009년에 어마무시한 친구를 내놓게 됩니다. 그것이 바로 Node.js에요.

이 친구는 말이죠, 단일 스레드를 기반으로 하는데요. API 사용에 있어 발생하는 동기, 비동기 처리를 원활히 적용하는 데 있어 이벤트 루프 방식을 채택했습니다. (항상 면접 단골 질문이죠?)
또한 성능이 우수한 구글의 V8 자바스크립트 엔진을 사용하고 있습니다.

가장 무시무시한 기능 중 하나는, Node.js를 통해 드디어 자바스크립트를 웹 브라우저 외부 환경에서도 동작시킬 수 있다는 것이에요.
따라서, 우리는 테스팅 등을 간단하게 브라우저 외에서 실행하고, 결과를 판단하고 푸시를 할 수 있게 된 것이죠!

한편, 우리는 이러한 Node.js의 설명을 통해 다음을 유추할 수 있어요.

결국 브라우저와 Node.js는 상이한 것이겠군!

맞습니다. 책에서 설명된 것처럼 둘은 엄연히 용도가 달라요.

브라우저는 결국 우리에게 보여주기 위한 렌더링의 목적을 갖고 있지만, Node.js는 반드시 웹 브라우저 환경에서만 동작하지 않아도 된다!는 실행 환경을 제공하는 것이 목적이에요.

그렇기에, 호환이 가능한 문법들도 조금씩은 다릅니다. 예컨대 DOM API가 대표적이겠죠?
굳이 Node.js에선 화면 렌더링이 필요가 없으니, 이를 제공하지 않습니다.

하지만, 반대로 Node.js는 외부 환경을 제어할 수 있는 여러 기능을 갖고 있습니다. 예컨대 파일 시스템이 있겠네요. 보안 상의 이유로 FileReader로 읽기만 한정되었던 브라우저의 기능은, Node.js에서는 생성, 수정 등까지 확장할 수 있게 된 것이죠.

하지만, ECMAScript라는 근본 뼈대는 함께 공유합니다. 그렇기에 자바스크립트의 표준 양식은 깨지 않으면서, 각자의 환경에서 각자의 목적에 맞는 쓰임을 유지할 수 있게 된 것이라고 표현하면 되겠어요!


✨ 마치며

사실 이벤트 루프의 원리 등 더 이야기를 할 요소들이 많지만, 핵심은 이것인 것 같아요.
이후에 따로 이벤트 루프에 관한 새로운 글을 만들어서, 더 디테일하게 쓰는 것이 글을 깔끔하게 쓰는 데 도움이 될 것 같았습니다.

다음은 이제 변수군요. 드디어 자바스크립트에 제대로 빠지는 시간이겠습니다. 그럼, 이상! 🌈

profile
People are scared of falling to the bottom but born from there. What they've lost is nth. 😉
post-custom-banner

0개의 댓글