공부기록 - 자바스크립트란?
2.1 자바스크립트의 탄생
웹브라우저 시장을 지배하고 있던 넷스케이프 커뮤니케이션즈에서 웹페이지의 보조적인 기능 수행을 위해
브라우저에서만 동작하게 만든 경량프로그래밍 언어가 자바스크립트다.
2.2 자바스크립트의 표준화
마이크로소프트가 만든 자바스크립트 파생 버전인 JScript와 넷스케이프 커뮤니케이션즈의 자바스크립트가
표준화 되지 못해 서로 완전히 호환되지 않는 일이 생겼다. 양 회사는 자사브라우저 시장 점유율을 위해
자사 브라우저에서만 동작하는 기능을 추가하기 시작했다.
이로 인해 브라우저에 따라 웹페이자가 정상 동작하지 않는 코르스 브라우징 이슈가 발생하기 시작했고,
이를 해결하기 위해 컴퓨터 시스템의 표준을 관리하는 비영리 표준화 기구인 ECMA 인터내셔널에 표준화를 요청한다.
이를 통해 만들어진 것이 ECMA-262라 불리는 표준화된 자바스크립트로, 상표권 문제로 ECMAScript로 명명되었다.
2.3 자바스크립트 성장의 역사
초창기 자바스크립트는 웹페이지 보조적 기능을 수핼하는 용도였다. 이 시기 대부분의 로직은 웹 서버에서 실행되었고,
브라우저는 서버로 부터 전달받은 HTML과 CSS를 단순히 렌더링하는 수준이었다.
#렌더링
렌더링이란 HTML, CSS, 자바스크립트로 작성된 문서를 해석해서 브라우저에 시각적으로 출력하는 것을 말한다.
2.3.1 Ajax
자바스크립트를 이용해 서버와 브라우저가 비동기 방식으로 데이터를 교환할 수 있는 통신기능인 Ajax가 XMLHttpRequest라는 이름으로 등장했다.
이전의 웹페이지는 html 태그로 시작해서 html 태그로 끝나는 완전한 HTML 코드를 서버로 전송받아 웹페이지 전체를
렌더링하는 방식으로 동작했다.
이런 동작은 변경할 필요 없는 부분까지 처음부터 끝까지 렌더링하는 불필요한 과정을 거치게 만들었다.
반면 Ajax는 기존과 달리 변경할 필요가 없는 부분은 렌더링하지 않고, 필요한 부분만 렌더링 할 수 있어 웹 브라우저에서도 데스크롭 애플리케이션과 유사한 빠른 성능과 부드러운 화면 전환을 가능하게 만들었다.
#동기, 비동기
동기는 응답(결과)를 받아야지만 동작을 한다. 하나의 일을 처리할 동안 다른 동작은 멈추게 된다.
비동기는 응답(결과)를 받지 않더라도 동작을 하는 방식이다. 동기보다 복잡하고 시간이 더 걸리더라도
그 시간 동안 다른 일을 할 수 있으므로 자원 관리에 효율적이다.
2.3.2 jQuery
DOM을 더욱 쉽게 제어할 수 있게 해주었다.
#DOM - Document Object Model
문서객체모델(DOM)은 XML이나 HTML에 접근하기 위한 인터페이스다.
이 객체 모델은 문서내의 모든 요소를 정의하고, 각각의 요소에 접근하는 방식을 제공한다.
?. 솔직히 잘 모르겠다. 조금 더 진도를 나가야 알 수 있을 것 같다.
2.3.3 V8 자바스크립트 엔진
구글 맵스의 Ajax를 기반으로한 웹 애플리케이션의 가능성을 확인된 뒤, 더욱 빠르게 동작하는 자바스크립트 엔진의
필요해졌다. 그 필요를 충족시킨 엔진이 구글의 V8 자바스크립트 엔진이다. V8 자바스크립트 엔진의 등장으로 데스크톱 애플리케이션과 유사한 사용자 경험을 제공할 수 있는 웹 애플리케이션 프로그래밍 언어로 정착하게 되었다.
V8 엔진 등장으로 웹 서버에서 수행되던 로직들이 대거 클라이언트로 이동했고, 웹 애플리케이션 개발에서 프런트엔드 영역이 주목받는 계기가 되었다.
2.3.4 Node.js
라이언 달이 발표한 Node.js는 V8 자바스크립트 엔진으로 빌드된 자바스크립트 런타임 환경이다.
브라우저의 자바스크립트 엔진에서만 동작하던 자바스크립트를 브라우저 이외의 환경에서도 동작할 수 있도록 독립시킨
자바스크립트 실행 환경이다. 다양한 플랫폼에서 작용할 수 있지만 서버 사이드 애플리케이션 개발에 주로 사용된다.
Node.js는 ?.비동기 I/O를 지원하며 단일스레드 이벤트 루프 기반으로 동작함으로써 요청 처리 성능이 좋다.
#단일스레드 이벤트 루프
이해하기 쉽지 않다 한바퀴 돌고 와서 다시 보자.
https://meetup.toast.com/posts/89
자바스크립트와 이벤트 루프 : NHN Cloud Meetup
자바스크립트와 이벤트 루프
meetup.toast.com