🔎 자바스크립트 탄생
1. 1995년 자바스크립트탄생 : 넷스케이프 커뮤니케이션즈에서 웹페이지의 보조적인 기능을 수행하기 위해 웹에서 동작하는 프로그래밍 언어 도입
2. 1996년 모카로 이름 변경 → 라이브스크립트로 이름변경 → 자바스크립트로 이름 변경
📜 자바스크립트 표준화
1. 1996년 마이크로소프트에서 자바스크립트 파생ver인 Jscript 도입
- 문제는 Jscript와 자바스크립트가 표준화 되지 못하고 적당히 호환됨
- 서로 시장 점유율 높이려고 자사 브라우저에서만 동작하는 기능을 경쟁적으로 추가
- 따라서!!!!!!! 크로스 브라우징 이슈 발생
2. 넷스케이프 커뮤니케이션즈에서 컴퓨터 시스템의 표준을 관리하는 ECMA인터내셔널에 자바스크립트의 표준화를 요청
3. 1997년 자바스크립트 초판사양이 완성됨 → 상표권 문제로 ECMAScript 로 명명
버전 | 출시년도 | 특징 |
ES1 | 1997 | 초판 |
ES2 | 1998 | ISO/IEC 16262 국제 표준과 동일한 규격을 적용 |
ES3 | 1999 | 정규 표현식, try…catch |
ES5 | 2009 | HTML5와 함께 출현한 표준안, JSON, strict mode, 접근자 프로퍼티, 프로퍼티 어트리뷰트 제어, 향상된 배열 조작 기능(forEach, map,filter,reduce,some,every) |
ES6(ECMAScript2015) | 2015 | let/const, 클래스 , 화살표 함수, 템플릿 리터럴, 디스트럭처링 할당, 스프레드 문법, rest 파라미터, 심벌, 프로미스,Map/Set, 이터러블,for…of, 제너레이터, Proxy, 모듈 import/export |
ES7(ECMAScript2016) | 2016 | 지수(**)연산자, Array.prootype.includes, String.prototype.includes |
ES8(ECMAScript2017) | 2017 | async/await, Object 정적 메서드(Object.values, Object.entries, Object.getOwnPropertyDescriptors) |
ES9(ECMAScript2018) | 2018 | Object Rest/Spread 프로퍼티, Promise.prototype.finally, async generator, for…await…of |
ES10(ECMAScript2019) | 2019 | Object.fromEntries(), Array.prototype.flatMap, Array.prototype.flat, optional catch binding |
ES11(ECMAScript2020) | 2020 | String.prototype.matcjAll, Bigint, global This, Promise.allSeeled, null 병합 연산자, 옵셔널 체이닝 연산자, for…in enumeration order |
⏳ 자바스크립트 역사
초창기 자바스크립트
- 웹페이지의 보조적인 기능 수행
- 웹 서버에서 실행
- 브라우저는 서버로부터 전달받은 HTML, CSS 단순하게 렌더링
- html태그로 시작해 html 태그로 끝나는 완전한 HTML코드를 서버로부터 전송받아 웹페이지 전체 렌더링 하는 방식 → 화면이 전환되면 서버로부터 새로운 HTML 전송받아 웹페이지 전체를 처음부터 다시 렌더링(불필요한 데이터 통신 발생, 화면전환이 깜빡임)
렌더링이란
HTML, CSS, JS로 작성된 문서를 해석해서 브라우저에 시각적으로 출력하는 것을 말함. 때로는 서버에서 데이터를 HTML로 변환해서 브라우저에게 전달하는 과정(SSR : Sever Side Rendering을 가리킴.
Ajax
- 서버와 브라우저가 비동기 방식으로 데이터를 교환할 수 있는 통신 기능
- XMLHttpRequest이름으로 등장
- 웹페이지에서 변경할 필요가 없는 부분은 다시 렌더링하지 않음
- 서버로부터 필요한 데이터만 전송받아 변경해야하는 부분만 한정적으로 렌더링
- 데스크톱 애플리케이션과 유사한 빠른 성능 & 부드러운 화면 전환 가능
jQuery
- 2006년 등장
- 번거롭고 논란이 있던 DOM을 더욱 쉽게 제어가능 하게 됨
- 크로스 브라우징 이슈도 어느정도 해결됨
V8 자바스크립트 엔진
- 더욱 빠르게 동작하는 자바스크립트 엔진의 필요성으로 등장
- 데스크톱 애플리케이션과 유사한 사용자 경험(UX)을 제공할 수 있는 웹 애플리케이션 프로그래밍 언어
- V8 자바스크립트 엔진으로 촉발된 자바스크립트의 발전으로 과거 웹 서버에서 수행되던 로직들이 대거 클라이언트(브라우저)로 이동했음
Node.js
- 2009년 라이언 달이 발표
- 구글 V8 자바스크립트 엔진으로 빌드된 자바스크립트 런타임 환경
- 브라우저의 자바스크립트 엔진에서만 동작하던 자바스크립트를 브라우저 이외의 환경에서 동작할 수 있도록 자바스크립트 엔전을 브라우저에서 독립시킨 자바스크립트 실행환경
- 주로 브라우저를 벗어나 서버 사이드 애플리케이션 개발에 주로 사용됨 → 범용 프로그래밍 언어
- 모듈, 파일 시스템, HTTP등 빌트인 API를 제공
- 비동기 I/O를 지원하며 단일스레드 이벤트 루프 기반으로 동작함으로써 요청 처리 성능이 좋음
- 실시간으로 처리하기 위해 I/O가 빈번하게 발생하는 SPA에 적합함
- 하지만 CPU 사용률이 높은 애플리케이션에서 권장하지 않음
- 자바스크립트는 크로스 플랫폼을 위한 가장 중요한 언어로 주목 받음
SPA 프레임 워크
- 모던 웹 애플리케이션은 데스크톱 애플리케이션과 비교해도 손색없는 성능과 사용자 경험을 제공하는 것이 필수가됨
- CBD(컴포넌트_기반)방법론을 기반으로 하는 SPA 대중화
- Angular,React, Vue.js,Svelte 등 다양한 프레임워크, 라이브러리 등장
'모던 자바스크립트 Deep Dive' 카테고리의 다른 글
[JS][Deep Dive] strict mode (0) | 2022.08.18 |
---|---|
[JS][Deep Dive] this (0) | 2022.08.18 |
[JS][Deep Dive] 자바스크립트 개발 환경과 실행방법 (0) | 2022.07.09 |
[JS][Deep Dive] 자바스크립트 특징 (0) | 2022.07.06 |
[JS][Deep Dive] 자바스크립트와 ECMAScript (0) | 2022.07.06 |