FE/JavaScript

[JS] 자바스크립트란?

mandelina 2022. 1. 31. 21:51

자바스크립트 탄생

-1995년, 브라우저에서 동작하는 경량 프로그래밍 언어를 도입하기로 결정, 그래서 탄생한것이 브렌던 아이크가 개발한 자바스크립트다.

 

 

 

자바스크립트의 표준화

-1996년 8월 ms는 js의 파생버전인 jscript를 인터넷 익스플로러 3.0에 탑재했다.그러나 js와 jscript가 표준화 되지 못하고 적당히 호환되었다.이로인해 브라우저에 따라 웹페이지가 정상적으로 동작하지 않는 크로스 브라우징 이슈가 발생하였다.

(크로스 브라우징 : 웹 페이지 제작 시에 모든 브라우저에서 깨지지 않고 의도한 대로 올바르게(호환성) 나오게 하는 작업을 말한다.)

-> 이에 모든브라우저에서 정상적으로 동작하는 표준화된 자바스크립트 요청

 

1997년 7월 , ECMA-262 라 불리는 표준화된 JS  초판 사양 완성

 

 

 

 

Ajax?

서버와 브라우저가 비동기 방식으로 데이터를 교환할 수 있는 통신 기능인 AjaxXMLHttpRequset라는

이름으로 등장했다.

( 비동기 처리란?  특정 코드가 끝날때 까지 코드의 실행을 멈추지 않고 다음 코드를 먼저 실행하는 것을 의미한다)

 

이전 웹페이지 :  html 태그로 시작해서 html태그로 끝나는 완전한 html코드를 서버로부터 전송받아 웹페이지 전체를 렌더링 하는 방식으로 동작

->따라서 화면이 전환도면 서버로부터 새로운 html을 전송받아 웹페이지 전체를 처음부터 다시 렌더링

(불필요한 데이터 통신이 발생, 변경할 필요가 없는 부분까지 렌더링 하기때문에 효율적이지 못했다.)

 

 Ajax의 등장으로 서버로부터 필요한 데이터만 전송받아 변경해야하는 부분만 렌더링하는 방식이 가능해졌다.

즉 화면의 깜빡임없이 부드러운 화면전환이 가능해진것이다.

 

 

 

 

jQuery?

다소 번거롭고 논란이 있던 DOM(document object model)을 더욱 쉽게 제어할 수 있고, 크로스 브라우징 이슈도 어느정도 해결 하였다.

 

 

 

 

V8 자바스크립트 엔진

2008년 구글의 V8자바스크립트 엔진은 웹 브라우저를 만드는 데 기반을 제공하는 오픈 소스 자바스크립트 엔진이다.

빠른 성능을 보여주며 이의 등장으로 UX(사용자 경험)을 제공할 수 있는 웹 애플리케이션 프로그래밍 언어로 정착하게 되었다. 

 

(과거 웹서버에서 수행되던 로직들이 대거 클라이언트로 이동했고, 이는 웹 애플리케이션 개발에서 프론트엔드 영역이 주목받는 계기로 작용했다.)

 

 

 

 

Node.js

2009년, 라인언 딜이 발표한 구글 V8 자바스크립트 엔진으로 빌드된 자바스크립트 런타임 환경이다.

node.js는 브라우저의 자바스크립트 엔진에서만 동작하던 자바스크립트를 브라우저 이외의 환경에서도 동작하도록 브라우저에서 독립시킨 실행환경이다.

주로 서버 사이드 애플리케이션 개발에 사용되며, 다양한 API를 제공한다.

 

비동기 I/O를 지원하며 단일스레드 이벤트 루프 기반으로 동작함으로써 요청처리 성능이 좋다.

 

( 이벤트 루프? 태스크가 들어오길 기다렸다가 태스크가 들어오면 이를 처리하고, 처리할 태스크가 없는 경우엔 잠드는, 끊임없이 돌아가는 자바스크립트 내 루프)

 

따라서 데이터를 실시간으로 처리하기 위해 I/O가 빈번히 발생하는  SPA(Single Page Application)에 적합하다.

하지만 cpu 사용률이 높은 애플리케이션에는 권장하지 않는다.

 

(단일스레드와 이벤트 루프는 다음에 다른 글에서 좀 더 자세히 다루겠다.)

 

 

 

 

SPA  프레임워크

CBD(component based development) 방법론을 기반으로 한 SPA(Single Page Application)가 대중화 되며

Angular, React , Vue.js , Svelte 등 다양한 SPA 프레임워크/라이브러리가 등장하였다.

 

 

 

 

자바스크립트와 ECMAScript

ECMAScript 는 자바스크립트 표준사양인 ECMA-262를 말하며 프로그래밍 언어의 값, 타입, 객체와 프로퍼티 , 함수 ,표준빌트인 객체 등 핵심 문법을 규정한다. 

자바스크립트는 ECMAScript와 브라우저가 별도 지원하는 클라이언트 사이트 web api (dom,bom,xmlhttprequest,fetch 등등...) 을 아우르는 개념이다.

 

 

 

 

자바스크립트의 특징

자바스크립트

 

-html,css와 함께 웹을 구성하는 요소중 하나로 웹 브라우저에서 동작하는 유일한 프로그래밍 언어이다.

기본문법은 C ,자바와 유사하고 셀프에서는 프로토타입 기반 상속을 , 스킴에서는 일급함수의 개념을 차용한다.

 

(self? self는 읽기 전용 속성이며 WindowProxy로서의 window 자신을 반환)

(스킴 프로그래밍 언어(Scheme) ? 함수형 프로그래밍과 절차적 프로그래밍을 지원하는 다중패러다임 프로그래밍 언어)

-별도 컴파일 작업을 수행하지 않는 인터프리터 언어다.

 대부분의 모던 자바스크립트 엔진은 인터프리터와 컴파일러 장점을 결합해 비교적 처리속도가 느린 인터프리터의 단점을 해결하였다.

 

 

*참고*

컴파일러 언어 종류 : C , C++ , Java , Rust , Go

인터프리터 언어 종류:  R , Python , PHP , Javascript