구글의 V8 자바스크립트 엔진으로 빌드된 자바스크립트 런타임 환경인 Node.js의 등장으로 JS는 웹 브라우저를 벗어나 서버 사이드 애플리케이션 개발에도 사용할 수 있는 범용 개발 언어가 되었다. 하지만 자바스크립트가 가장 많이 사용되는 분야는 역시 웹 브라우저 환경에서 동작하는 웹페이지 / 애플리케이션의 클라이언트 사이드다.

대부분의 프로그래밍 언어는 운영체제나 가상머신위에서 실행되지만 웹 애플리케이션의 클라이언트 사이드 JS는 브라우저에서 HTML, CSS와 함께 실행된다. 따라서 브라우저환경을 고려할 때 더 효율적인 클라이언트 사이드 자바스크립트 프로그래밍이 가능하다.

브라우저는 다음과 같은 과정을 거쳐 렌더링을 수행한다.

  1. HTML, CSS, JS, 이미지, 폰트 파일등 렌더링에 필요한 리소스를 요청하고 서버로부터 응답을 받는다.
  2. 브라우저 렌더링 엔진은 서버로부터 응답받은 HTML과 CSS를 파싱하여 DOM과 CSSOM을 생성하고 결합하여 렌더 트리를 생성한다.
  3. 브라우저의 JS엔진은 서버로부터 응단된 JS를 파싱하여 AST(Abstract Syntat Tree)를 생성하고 바이트코드로 변환하여 실행한다. 이때 자바스크립트는 DOM API를 통해 DOM이나 CSSOM을 변경할 수 있다. 변경된 DOM과 CSSOM은 다시 렌더 트리로 결합된다.
  4. 렌더트리를 기반으로 HTML요소의 레이아웃(위치와 크기)를 계산하고 브라우저 화면에 HTML요소를 페인팅한다.

38.1 요청과 응답

프라우저의 핵심기능은 필요한 리소스를 서버에 요청하고 서버로부터 응답받아 브라우저에 시각적으로 렌더링하는 것이다. 즉, 렌더링에 필요한 리소스는 모두 서버에 존재하므로 필요한 리소스를 서버에 요청하고 서버가 응답한 리소스를 파싱하여 렌더링 하는것.

Untitled

URI : 통합 자원 식별자 (Uniform Resource Identifier)는 인터넷에 있는 자원을 나타내는 유일한 주소.

URL: 파일 식별자 (Uniform Resource Locator) 네트워크 상에서 자원이 어디 있는지를 알려주기 위한 규약.

URN: 통합 자원 이름 (Uniform Resource Name)

스킴(scheme): 구체적이고 확정된 것을 말한다.