자바스크립트란?
웹브라우저에서 화면을 띄울 때 세가지 프로그래밍 언어를 씀
1) HTML (HyperText Markup Language) : HTML로 이 엘리먼트에 정보를 담는 언어
※ 엘리먼트 : 웹 브라우저 화면에 보이는 컨텐츠
2) CSS (Cascading Style Sheets) : 엘리먼츠를 디자인하는 언어
3) JavaScript (자바스크립트) : 엘리먼츠를 움직이게하는 언어
자바스크립트의 대표적 단점
Implicit type conversion (암시적 형 변환)
아래와 같이 브라우저의 콘솔창에서 JS를 실행하면
왼쪽과 같이 예상가능한 결과가 나옴
But 뺄셈의 경우 오른쪽 그림과 같이 두개의 값을 비교 또는 연산할 때 예상된 결과가 안나옴
(다른 언어의 경우 "101"-"1"의 경우 에러가 나옴)
자바스크립트는 열흘만에 급하게 만든 언어여서 문법적인 부분이 완벽하지 않음
하지만 자바스크립트는 배우기 쉬운 언어라 대중성이 있기 때문에
크롬의 V8 엔진으로 자바스크립트를 컴퓨터가 이해할 수 있게 해석
Node.JS
면접용 공식 표현 : 크롬 V8엔진으로 빌드 된 자바스크립트 런타임
(런타임 : 특정 언어로 만든 프로그램들을 실행할 수 있게 해주는 가상 머신의 상태 -> 크롬의 V8엔진사용
다른 런타임으로는 웹 브라우저 (크롬, 엣지, 사파리, 파이어폭스 등...)가 있음
)
현실용 표현 : 자바스크립트를 프런트뿐만 아니라 백엔드를 설계할 수 있는 툴
Node.JS는 서버가 아님 But 서버의 역할도 수행할 수 있는 JS 런타임
노드로 JS로 작성된 서버를 실행할 수 있음
서버 실행을 위해 필요한 http/https/http2 모듈을 제공
node js가 나옴에 따라 JS는 브라우저로부터의 종속성에서 벗어날 수 있게됨
html이 아니어도 node js로 JS를 실행할 수 있게
이것은 JS가 웹뿐만 아니라 앱, 게임, 서버도 만들 수 있게되어 JS 언어의 확장성을 넓어짐
Node.JS 특징
(1) 프론트엔드 엔지니어들이 쉽게 백엔드 서버를 개발할 수 있음
(2) 배우기 쉬운 대중적인 언어인 자바스크립트로 백엔드 서버를 개발 할 수 있음
(3) 비동기 이벤트 주도, 논-블로킹으로 효율적이고 확장성 있는 네트워크 앱을 만들 수 있도록 설계
(비동기 처리 구현은 루비의 이벤트머신, 파이썬의 트위스티드가 먼저)
싱글스레드이면서 비동기 모델이여서 빠른 성능을 이끌어 낼 수 있음 -> Node Js의 내부 구조중 libuv 라이브러리 (이벤트 기반, 논블로킹 I/O 모델을 구현한 라이브러리)덕분
'Node.JS' 카테고리의 다른 글
[Node.js 교과서] 2-1,2. REPL 및 CommonJS 모듈 시스템 (0) | 2023.12.18 |
---|---|
[Node.js 교과서]1-5. 화살표 함수 (0) | 2023.12.15 |
[Node.js 교과서]1-1,2. 호출 스택, 이벤트 루프 (0) | 2023.12.15 |
[Node.js 교과서] 0-3. 서버로서의 노드 (0) | 2023.12.09 |
[Node.js 교과서] 0-2. 노드의 특성 - 이벤트 기반, 논블로킹 I/O (0) | 2023.12.08 |