자바스크립트는 명령형, 함수형, 프로토타입 기반 객체지향 프로그래밍을 지원하는
멀티 패러다임 프로그래밍 언이
이며프로토타입 기반의 객체지향 언어
다.
자바스크릡트는 1996년 웹페이즈의 보조적인 기능을 수행하기 위해 브라우저에서 동작하는 경량 프로그래밍 언어를 도입하기 위해 브렌던 아이크가 개발한 언어이다.
자바스크립트의 파편화를 방지하고 모든 브라우저에서 정상적으로 동작하는 표준화된 자바스크립트의 필요성을 느껴 만든 표준 사양을 ECMAScript(일명 ES)를 만들었다. 현재는 ES13(ECMAScript 2022)까지 나왔다.
웹페이지의 보조적인 기능을 수행하기 위한 언어로서 웹페이지의 성능을 향상시키는 역할을 한 자바스크립트의 역사이다.
1999년, 자바스크립트를 이용해 서버와 브라우저가 비동기
방식으로 데이터를 교환할 수 있는 통신 기능인 Ajax
가 XMLHttpRequest라는 이름으로 등장했다.
기존에 웹페이지는 화면이 전환되면 화면이 순간적으로 깜박이는 현상이 발생하고, 이는 웹페이지의 어쩔 수 없는 한계로 받아들여졌다.
Ajx의 등장은 이전의 패러다임을 획기적으로 전환했다. 즉, 웹페이지에서 병경할 필요가 없는 부분은 다시 렌더링하지 않고, 서버로부터 필요한 데이터만 전송받아 변경해야 하는 부분만 한정적으로 렌더링하는 방식이 가능해진 것이다.
2006년, JQuery는 다소 번거롭고 논란이 있던 DOM을 더욱 쉽게 제어할 수 있게 해주었고 크로스 브라우징 이슈도 어느정도 해결해 주었다.
구글의 V8 자바스크립트 엔진은 빠른 성능을 보여주어 웹 애플리케이션을 구축하는데 큰 도움을 주어 자바스크립트가 웹 애플리케이션 프로그래밍 언어로 자리잡을 수 있게 해주었다.
Node.js는 구글 V8 자바스크립트 엔진으로 빌드된 자바스크립트 런타임 환경이다. Node.js는 브라우저의 자바스크립트 엔진에서만 동작하던 자바스크립트를 브라우저 이외의 환경에서도 동작할 수 있도록 자바스크립트 엔진을 브라우저에서 독립시킨 자바스크립트 실행 환경이다. Node.js는 다양한 플랙폼에 적용할 수 있지만 서버 사이드 애플리케이션 개발에 주로 사용되며, 이에 필요한 모듈, 파일 시스템, HTTP 등 빌트인 API를 제공한다.
SPA란 Single Page Aplication을 말하며 CBD Component Based Development 방법론을 기반으로 만들어진 프레임워크 들을 말한다. 대표적으로 Angular, React, Vue.js, Svelte 등이 있다.
ECMAScript는 자바스크립트의 표준 사양인 ECMA-262를 말하며, 프로그래밍 언어의 값, 타입, 객체와 프로퍼티, 함수, 표준 빌트인 객체 등 핵심 문법을 규정한다. 각 브라우저 제조사는 ECMAScript 사양을 준수해서 브라우저에 내장되는 자바스크립트 엔진을 구현한다.
자바스크릡트는 일반적으로 프로그래밍 언어로서 기본 뼈대를 이루는 ECMAScript와 브라우저가 별도로 지원하는 클라이언트 사이드 Web API, 즉 DOM, BOM, Canvas, XMLHttpRequest, fetch, requestAnimationFrame, SVG, Web Storage, Web Component, Web Worker 등을 아우르는 개념이다.
자바스크립트는 HTML, CSS와 함께 웹을 구성하는 요소 중 하나로 웹 브라우저에서 동작하는 유일한 프로그래밍 언어다.
자바스크립트는 개발자가 별도의 컴파일 작업을 수행하지 않는 인터프리터 언어다.
자바스크립트는 명령형, 함수형, 프로토타입 기반 객체지향 프로그래밍을 지원하는 멀티 패러다임 프로그래밍 언이
이며 프로토타입 기반의 객체지향 언어
다.
인터넷 익스플로러를 제외한 모던 브라우저의 ES6 지원 비율은 96~99%로 거의 100%에 육박하지만 인터넷 익스플로러나 구형 브라우저는 ES6를 대부분 지원하지 않는다.
자바스크립트란 무엇인지 알아보았는데 모르는 말이 굉장히 많이 나와 당황스러웠다. 사실 현재 글은 스터디 1주차를 작성하고 있지만 글을 쓰는 지금은 스터디를 진행한지 3개월이 넘어가 이 책을 거의 끝낸 상태이다. 그래서 비동기나 DOM, 프로토타입 기반 등 절반 정도는 이해가 가지만 아직 모르는 용어들이 많아 더 많이 공부해야겠다는 생각이 들고 특히 2.3에 SPA 프레임워크는 최근에 NEXT.js 프레임워크도 사용하여 SSR 구현도 해보았고 앞으로 React를 배워나갈 예정이기에 괌심을 보였다.