Node.js

JavaScript

Node.js를 알아보기 이전에 자바스크립트에 대해서 이해를 하고 있어야 합니다. 자바스크립트는 기본적으로 클라이언트 사이드 (Client Side)에서 사용되는 스크립트 언어를 말합니다. 

여기서 말하는 클라이언트 사이드는 사용자의 웹 브라우저에서 동적으로 코드를 변경되는 것을 말하며, 반대로의 의미는 서버 사이드(Server Side) 입니다. 자바스크립트가 가진 특징은 아래와 같습니다. 

 

클라이언트 측 스크립트 언어:

위에서 설명 하였 듯이, JavaScript는 웹 브라우저에서 실행되는 클라이언트 측 스크립트 언어입니다. HTML 문서 안에서 <script> 태그를 사용하여 JavaScript 코드를 작성하고 실행할 수 있습니다. 웹 페이지의 동적인 동작을 구현하거나 사용자와의 상호작용을 처리하는 데 사용됩니다.

 

객체 기반:

JavaScript는 객체 지향 프로그래밍 언어입니다. 객체(Object)는 속성과 메서드를 포함한 데이터 구조로, JavaScript에서 모든 것은 객체입니다. 이를 통해 코드를 모듈화 하고 재사용성을 높일 수 있습니다.

 

동적 타입 (dynamic typing) :

JavaScript는 동적 타입언어입니다. 변수의 타입을 명시적으로 선언하지 않고, 실행 시간에 자동으로 타입을 추론합니다. 쉽게 말하자면 자바에서는 String과 int 그리고 boolean을 사용할 때, 타입을 지정을 하고 사용하지만 자바스크립트는 let 과 const 라는 타입을 지정하면 모두 다 같이 사용할 수 있습니다. 이는 유연성을 제공하지만, 타입 에러를 런타임에서 발견할 수 있습니다.

 

이벤트 기반 (event-driven) :

JavaScript는 이벤트 기반언어입니다. 이벤트가 발생하면 이벤트 핸들러를 실행하여 해당 이벤트에 대한 응답을 처리합니다. 사용자의 클릭, 마우스 움직임, 네트워크 요청 등 다양한 이벤트에 대한 처리를 지원합니다.

 

다양한 용도:

JavaScript는 웹 개발뿐만 아니라 다양한 분야에서 사용됩니다. Node.js를 사용하여 서버 측 개발을 할 수 있고, 모바일 앱 개발 프레임워크인 React Native를 통해 모바일 애플리케이션도 개발할 수 있습니다. 또한, 데이터 시각화, 게임 개발, 인공지능 등 다양한 영역에서도 활용됩니다.


Node.js

Node.js 라는 것을 공부하게 되면 자주 듣게 되는 말은 'Node.js 는 JavaScript의 런타임 환경이다' 라는 말입니다. 그렇다면 여기서 말하는 런타임 환경이라는게 무엇인가에 대한 의문증을 풀어보겠습니다.

우리는 이미 JavaScript는 웹 페이지를 동적으로 변화하고 이벤트 작용을 위해 사용되는 스크립트 언어라는 것을 알고 있습니다. 그러면 이러한 스크립트 언어는 언제 실행이 되는 가를 알아야 합니다. 해당 스크립트 언어는 서버에서 컴파일 되는 시점에서 시행되는 것이 아닌 브라우저에서 JavaScript 언어를 실행하는 엔진에 의해 수행 된다는 것입니다. 

 

컴파일 이란? 
현재 개발자들이 사용하고 있는 언저 Python과 Java는 고급언어로 기계어를 쉽게 다루기 위해 사용되는 언어입니다. 이 말은 즉, 사용자가 편하게 사용하기 위해 만들어 진 것으로 다시 기계가 이해할 수 있는 언어로 다시 변환하는 작업을 수행해야 하는데 이것을 컴파일링 이라고 지칭합니다.

 

엔진 이란?
엔진이라고 하면은 스크립트를 언어를  수행하기 위핸 하나의 툴로 각 브라우저마다 제공하는 엔진이 존재합니다. 대표적으로는 크롬의 V8 과 MS사의 차크라 그리고 모질라의 SpriderMonkey가 있습니다. 

 

런타임이라고 하면은 이러한 프로그래밍 언어가 실행되는 환경을 의미합니다. JavaScript의 경우, 웹 브라우저가 JavaScript 코드를 해석하고 실핼할 수 있는 브라우저 환경을 런타임 환경이라고 할 수 있습니다. 

 

그렇다면 다시 Node.js에 대해서 정리를 하자면 Node.js는 JavaScript를 실행할 수 있는 서버 측 런타임 환경입니다. 즉, JavaScript를 브라우저 외부에서 실행할 수 있도록 해주는 플랫폼을 의미합니다. Node.js는 Google Chrome의 V8 JavaScript 엔진을 기반으로 구축되어 JavaScript 코드를 서버에서 실행할 수 있게 해줍니다.

 

V8엔진은 구글에서 만든 자바스크립트 컴파일러이고 이러한 컴파일러 덕분에 브라우저 밖에서도 자바스크립트를 사용이 가능하게 되었습니다. V8엔진은 C++언어로 구성이 되어져 있고 V8엔진으로 JavaScript 언어가 컴파일링이 되면 머신코드로 변환이 되어져 실행이 됩니다. 

 

Node.js 는 Apache난 Nginx가 서버에서 수행 해야 하는 수행하는 Request를 받는 작업이나 Response를 내장 Http 모듈을 통해 해당 작업을 수행하고 있습니다. 그리고 비즈니스 로직을 수행하는 코드를 작성하여서 비즈니스 로직을 수행토록 할 수 있다는 것입니다. 마지막으로는 하나의 언어로 프론트엔드와 백엔드를 작성할 수 있다는 가장 큰 장점을 가지고 있다. 

'Backend > Node.js' 카테고리의 다른 글

Node.js child_process  (1) 2024.01.08
Node.js Event Architecture  (0) 2023.12.14
Node.JS) Module Caching 을 알아보자  (0) 2023.09.14
Node.js TDD 단위테스트, 통합테스트  (0) 2023.07.14
Node.js 작동방식 및 Event loop  (0) 2023.06.26