Ajax
자바스크립트를 활용해 서버와 브라우저가 비동기방식으로 데이터를 교환할 수 있는 통신기능이다.
이전까지는 html 이 화면을 전부 렌더링하는 방식이었다. 그렇기때문에 화면이 전환되면 새로운 html이 열리게 되고 전체를 다시 렌더링하였다. 이것의 불편한 점은 매번 새롭게 계속 렌더링하는 것이었다. 바뀌지 않은 부분도 화면 전체를 바꿔주었던 것과 화면이 전환되면서 순간적으로 깜빡거리면서 바뀌는 현상이 발생이 되었다.
Ajax의 등장으로 인해 이러한 불편한 점이 바뀌게 되었다. 변경할 필요 없는 부분을 다시 렌더링하지 않고, 서버로부터 필요한 데이터만 전송받아 변경해야하는 부분만 한정적으로 렌더링해주었다.
그럼으로써 기존에 Html로 새롭게 렌더링할때 페이지가 깜빡거리는 현상이 없어지고 빠른 성능과 부드러운 화면전환이 가능해졌다.
Node.js
브라우저의 자바스크립트 엔진에서만 동작하던 자바스크립트를 브라우저 이외의 환경에서도 동작 할 수 있도록 자바스크립트 엔진을 브라우저에서 독립시킨 실행환경이다.
주로 서버 사이드 애플리케이션 개발에 사용되며, 필요한 모듈, 파일 시스템, HTTP 등 빌트인(내장) API 를 제공한다. '
Node.js는 자바스크립트 엔진을 기반이다. Node.js환경에서 동작하는 애플리케이션은 자바스크립트를 사용해 개발한다.
특징 : 비동기 I/o 를 지원하며 단일 스레드 이벤트 루프 기반으로 동작함으로써 요청처리 성능이 좋다. 따라서 node.js 는 데이터를 실시간으로 처리하기 위해 I/o가 빈번하게 발생하는 SPA( Single page Application ) 에 적합하다. 하지만 CPU 사용률이 높은 애플리케이션에 권장하지 않는다.
Node.js의 등장으로 자바스크립트는 기존의 브라우저에서만 사용되던 것이 이제는 서버 사이드 애플리케이션 게발에서도 사용할 수 있는 범용 프로그래밍의 언어가 되었다.
자바스크립트의 특징
자바스크립트는 HTML, CSS 와 함께 웹을 구성하는 요소 중 하나로 웹 브라우저에서 동작하는 유일한 프로그래밍 언어이다.
자바스크립트는 개발자가 별도의 컴파일 작업을 수행하지 않은 인터프리터 언어이다.
컴파일언어 | 인터프리터 언어 |
코드가 실행되기 전단계인 컴파일 타임에 소스코드 전체를 한번에 머신코드(cpu가 바로실행하는 기계어)로 변환한 후 실행한다. | 코드가 실행되는 단계인 런타임에 문 단위로 한 줄씩 중간코드인 바이트코드로 변환한 후 실행한다. |
실행 파일을 생성한다. | 실행파일을 생성하지 않는다. |
컴파일 단계와 실행 단계가 분리되어 있다. 단계를 거치고, 명시적으로 실행 파일을 실행한다. |
컴파일 단계와 실행 단계가 분리되어 있지 않다. 한줄씩 바이트 코드로 변환하고 즉시 실행한다. |
실행에 앞서 컴파일은 단 한번 수행한다. | 코드가 실행될 때마다 인터프리트 과정이 반복 수행된다. |
컴파일과 실행단계가 분리되어 있으므로 코드 실행 속도가 빠르다. | 인터프리트 단계와 실행 단계가 분리되어 있지 않고 반복 수행되므로 코드 실행 속도가 비교적 느리다. |
자바스크립트는 명령형, 함수형, 프로토타입 기반 객체지향프로그래밍을 지원하는 멀티 패러다임 프로그래밍 언어이다.
클래스 기반 객체지향언어보다 효율적이면서 강력한 프로토 타입기반의 객체 지향언어이다.
자바스크립트의 실행환경
자바스크립트를 해석하고 실행할 수 있는 엔진을 모든 브라우저에서 가지고 있다. 당연히 Node.js 에서도 자바스크립트 엔진을 내장하고 있는데 여기서 주의할 점은 브라우저와 Node.js 용도가 다르다는 점이다.
- 브라우저는 HTML, CSS , JAVASCRIPT 를 실행해 웹페이지를 브라우저 화면에 렌터링하는 것이 주된 목적
- Node.js 는 브라우저 외부에서 자바스크립트 실행환경을 제공하는 것이 주된 목적
= 둘다 자바스크립트 코어인 ECMScript를 실행할 수 있지만 브라우저와 Node.js 에서 ECMScript 이외에 추가로 제공하는 기능은 호환되지 않는다.
브라우저에서는 Html 요소를 선택, 조작 등 기능의 집합인 DOM API 를 기본적으로 제공한다. 하지만 브라우저 외부에서 자바스크립트 개발 환경을 제공하는 것이 주 목적인 Node.js 는 DOM.API를 제공하지 않는다.
브라우저 외부환경에서는 HTML 요소를 파싱해서 객체화한 DOM(Document Obuect Model) 을 직적 다룰 필요가 없기 때문이다.
반대로 Node.js 에서는 파일을 생성하고 수정할 수 있는 파일 시스템을 기본 제공하지만 브라우저에서는 이를 지원하지 않는다.
브라우저
- ECMScript, DOM, BOM, Canvas, XMLHttpRequest, fetch , requestAnimation, Frame, SVG, Web Storage, Web Component 와 같은 클라이언트 사이드 web Api 를 지원한다.
Node.js
- 클라이언트 사이드 Web API 를 지원하지 않고, ECMScript, Node.js 고유의 API를 지원한다.
'자바스크립트' 카테고리의 다른 글
타입 변환과 단축 평가 (0) | 2021.12.11 |
---|---|
데이터타입의 필요성 (0) | 2021.12.10 |
데이터 타입 (0) | 2021.12.10 |
리터럴과 표현식 (0) | 2021.12.10 |
변수 (0) | 2021.12.09 |