0과 1밖에 알지 못하는 기계가 실행할 수 있을 정도로 정확하고 상세하게 요구사항을 설명하는 작업
프로그래밍 언어를 사용해 프로그램을 작성 후, 컴파일러, 인터프리터로 컴퓨터가 이해할 수 있는 기계어로 변환해 컴퓨터로 전달한다.
HTML, CSS, JS로 작성된 문서를 해석해서 브라우저에서 시각적으로 출력하는 것, 때로는 서버에서 데이터를 HTML로 변환해서 브라우저에게 전달하는 과정(SSR : Server Side Rendering)을 가르키기도 한다.
서버와 브라우저가 비동기 방식으로 데이터를 교환할 수 있는 통신 방식
웹페이지에서 변경할 필요가 없는 부분은 다시 렌더링하지 않고, 서버로부터 필요한 데이터만 전송받아 변경해야 하는 부분만 렌더링하게 만듦
자바스크립트 런타임 환경
JS를 브라우저 이외 환경에서도 동작할 수 있도록 JS엔진을 브라우저에서 독립시킨 실행 환경
다양한 플랫폼에 적용 가능, 주로 서버 사이드 애플리케이션 개발에 주로 사용되며, 이에 필요한 모듈, 파일 시스템, HTTP 등 built-in API를 제공함
컴파일러 언어 | 인터프리터 언어 |
---|---|
코드 실행 전 단계인 컴파일타임에 소스 코드 전체를 한번에 머신 코드로 변환한 후 실행한다. | 코드가 실행되는 단계인 런타임에 문 단위로 한 줄씩 중간 코드인 바이트 코드로 변환 후 실행 |
실행 파일을 생산 | 실행파일 생산 x |
컴파일 단계와 실행 단계가 분리. 명시적인 컴파일 단계를 거치고, 명시적으로 실팽 파일을 실행 | 인터프리트 단계와 실행 단계가 분리되어 있지 않음. 인터프리터는 한 줄씩 바이트코드로 변환 후 즉시 실행 |
실행에 앞서 컴파일은 단 한번 수행 | 코드가 실행될 때마다 인터프리트 과정이 반복 수행 |
컴파일과 실행 단계가 분리되어 있으므로 코드 실행 속도가 빠름 | 인터 프리트 단계와 실행 단계가 분리되어 있지 않고 반복 수행되므로 코드 실행 속도가 비교적 느림 |
브라우저
HTML, CSS, JS 실행 웹페이지를 브라우저 화면에 렌더링하는 것이 주된 목적
Node.js
브라우저 외부에서 JS 실행환경을 제공하는 것이 주된 목적
브라우저는 Node.js와 다르게 파일을 생성,수정할 수 있는 파일 시스템을 제공하지 않는다
➡️ 웹 애플리케이션의 JS는 사용자 컴퓨터의 브라우저에서 동작하는데 브라우저를 통해 다운로드되어
실행되는 JS가 로컬 파일을 삭제, 수정, 생성 등의 보안상의 문제를 방지하기위해 브라우저 환경의 JS는 파일시스템을 제공하지 않음