[JS]자바스크립트란?

2021. 11. 18. 01:37학습/JavaScript

반응형

왜 생겨났는가?

자바 스크립트는

1995년의 웹브라우저 시장을 지배한 "넷스케이프 커뮤니케이션즈" 에서

브라우저의 보조적인 기능을 위해 개발한 프로그래밍 언어이다.


표준화가 필요하다!

1996년 마이크로소프트가 자바스크립트의 파생버전 "JScript"를 익스플로러에 탑재하면서 문제가 생긴다.

"JScript"와 자바스크립트가 대충 호환된다는 것

 

왜? 이렇게 만듬?

 

넷스케이프 커뮤니케이션즈와 마이크로소프트가 자사브라우저 점유율을 높이기 위해서 나온 상황이다.

결국에는 브라우저마다 웹페이지가 정상적으로 돌아가지 않는 "크로스브라우징"이슈가 일어났다.

 

이후로

자바스크립트의 파편화를 막고 모든 브라우저에서 정상적으로 동작하기위해

표준화가 필요성이 대두되었고 자바스크립트의 표준 "ECMAScripts"가 나오게 되었다.


자바스크립트의 인식 변화 과정

처음에는 "넷스케이프 커뮤니케이션즈" 에서 브라우저의 보조적인 기능을 위해 썼다.

당시에는 브라우저는 서버에서 받은 html과 css를 렌더하는 방식이다. (SPA 가 아니다!!!)


"AJAX" 

1999년 자바스크립트를 통해서 서버와 브라우저가 비동기 방식으로 데이터를 교환할수있게된다.

이 기능이"AJAX"이며 XMLHttpRequest라는 이름으로 나왔다.

이기능 덕분에 받은 html과 css를 전부 새로 렌더하는것이 아닌 부분적인 렌더링이 가능해지게 된다.


"jQuery"

2006년 jQuery가 등장하면서

​ "DOM을 쉽게 제어가능"해지고

​ "크로스브라우징이 해결"되어가고있고

​ "직관적이고 배우기까지 쉽다"보니 자바스크립트보다 더 선호되었다.


"V8"

자바스크립트에대해서 프로그래밍 언어로서의 가능성을 발견하게되었고

자바스크립트를 통해서 웹애플리케이션을 구축하려고 했으며

이를위해 자바스크립트 엔진의 필요성을 느끼게된다. (너무느려서!)

 

그래서 2008년 구글이 V8 자바스크립트을 꺼내들고 빠른 성능을 보여주었다.

이과정을 통해서 엄연한 프로그래밍 언어로서 인정받는다.

V8을 통해서 웹서버에서 수행되던 로직이 클라이언트(브라우저) 로 이동이 되었다.


"Node.js" 브라우저를 벗어나다.

V8자바스크립트 엔진으로 빌드된 런타임 환경이다.

당시 브라우저의 자바스크립트 엔진에서만 동작하는 자바스크립트를

브라우저 이외의 환경에도 돌아가도록 만든 "자바스크립트 실행환경" 이다.

 

서버사이드 애플리케이션 제작에 사용되고, 빌트인 API를 제공한다.

 

Node.js는 비동기I/O를 지원하며 "단일 스레드 이벤트 루프 기반"으로 동작한다

I/O가 빈번한 SPA에 적합하며, CPU 사용율이 높은 애플리케이션에는 적합하지 않다.

현재는 크로스플랫폼을 위한 가장 중요한 언어로 생각된다.

Node.js로 인해 프론트의 영역뿐만 아니라 백엔드 영역도 포함하게 되었다.

 

크로스 플랫폼:

특정 소스를 플랫폼(윈도우, 리눅스)에 묶이지 않고자유롭게 사용할수있도록 서포트하는 역할

 


"SPA" 싱글페이지애플리케이션

현재 돌아와서 웹페이지들을 본다면 개발규모와 복잡도가 상당히 커졌다.

그러다 보니 웹프레임워크/라이브러리가 나오게 되고 CBD 방법론을 기반으로 하는 SPA가 대중화 되었다.

흔히 아는"Vue" "Angular" "React" 가 그러한 예시이다.

 

CBD: 

컴포넌트 기반 개발


특징

  1. 자바스크립트는클라이언트 사이드 Web API는 ECAMScript 처럼 관리하고있다.
  2. ECAMScript + 브라우저가 별도로 지원하는 클라이언트 사이드 Web API +기타(?) 이다.
  3. 웹브라우저에서 동작하는 유일한 프로그래미 언어다.
  4. 인터프리터 언어이다
    • 인터프리터 - 소스코드를 즉시실행
    • 컴파일러 - 머신코드를 생성하고 최적화함
  5. 모던 자바스크립트 엔진은 "인터프리터"와 "컴파일러"의 장점을 결합해서 처리속도가 느린것을 극복햇다.
  6. 명령형, 함수형, 프로토타입기반 객체지향 프로그래밍을 지원하는 멀티 패러다임 프로그래밍 언어이다.

 

 

현재의 브라우저

모던 브라우저는 ES6를 지원하지만 (익스플로러 제외하고)

모든 기능을 갖고있지는 않다. 그러므로 바벨같은 컴파일러와 폴리필을 제공하자

 

출처 : 자바스크립트 딥 다이브

반응형

'학습 > JavaScript' 카테고리의 다른 글

[JS] 클로저  (0) 2022.08.07
[JS] 콜백함수  (0) 2022.08.07
[JS] this  (0) 2022.08.06
[JS] 실행 컨텍스트  (0) 2022.07.31
[JS] 원시타입과 참조타입의 차이  (0) 2022.07.16