모던자바스크립트 Deep Dive 1장을 읽으며 정리합니다.

자바스크립트란

프로그래밍 언어로써 기본 뼈대를 이루는 ECMAScript와 브라우저가 별도로 지원하는 클라이언트 사이드 Web API(DOM, BOM, Canvas, XMLHttpRequest, fetch, SVG, Web Storage 등)을 아우르는 개념입니다. 웹 브라우저에서 동작하는 유일한 프로그래밍 언어입니다. 또 개발자가 별도의 컴파일을 하지 않는 인터프리터 언어입니다. 인터프리터 언어의 경우 한줄씩 바이트코드로 변환하고 즉시 실행합니다. 마지막으로 명령형/함수형/프로토타입기반 객체지향 프로그래밍을 지원하는 멀티 패러다임 프로그래밍 언어입니다.

자바스크립트가 표준화된 이유

마이크로소프트 등 여러 회사들이 자사 브라우저에서만 동작하는 기능을 추가하면서, 크로스 브라우징 이슈가 생기기 시작했습니다.
그래서 자바스크립트 표준사양인 ECMAScript가 출시됐습니다. 각 브라우저 제조사들은 ECMAScript 사양을 준수해 브라우저에 내장될 JS 엔진을 구현합니다.

자바스크립트 성장의 역사

초창기 자바스크립트는 웹페이지의 보조적인 기능만 수행했습니다.
하지만 시간이 변하면서 점점 자바스크립트의 역할이 많아졌고, 서버의 일을 클라이언트가 하게 되기도 했습니다.
JS의 발전에서 중요했던 기술들은 크게 Ajax, jQuery, V8 JS Engine, Node.js, SPA 프레임워크들이 있는데요.

Ajax(Asynchronous JS and XML)는 자바스크립트를 이용해 서버와 브라우저가 비동기 방식으로 데이터를 교환할 수 있는 통신기능입니다.
Ajax 이전에는 화면이 전환될 때마다 서버로부터 새로운 HTML을 전송받아 웹페이지 전체를 처음부터 다시 렌더링했는데요. 변경하지 않아도 되는 부분의 HTML 코드를 서버로부터 다시 전송받기 때문에 불필요한 데이터 통신을 해야했습니다.

jQuery는 DOM을 쉽게 제어하게 해준 JS 라이브러리이고, V8 JS 엔진은 과거 웹 서버에서 수행되던 로직들이 클라이언트(브라우저)로 많이 이동하게 된 계기가 되었습니다. Node.js는 구글 V8 JS 엔진으로 빌드된 JS 런타임 환경입니다. 원래는 브라우저의 JS 엔진에서만 동작하던 자바스크립트를 브라우저 밖으로 독립시켰습니다.
덕분에 서버 사이드를 개발할 때에 JS를 쓸 수 있게 되었습니다. 마지막으로 앵귤러, 리액트 등 여러 SPA 프레임워크들이 등장했습니다.