- 웹 개발 프레임워크의 기본 컴포넌트에 초점이 맞춰져 있다
- Node.js-to-AngularJS 스택의 컴포넌트를 설명.
주요 컴포넌트 ⇒ 사용자 / 브라우저 / 웹 서버 / 백엔드 서비스
사용자 → 백엔드 서비스에 이르기까지 컴포넌트들은 탑다운 방식으로 설명되어 있다.
<브라우저>
[ HTTP GET/PUT/AJAX ]
HTML - CSS - JSON - AJAX - JPG - JS
<서버>
*** 웹 서버 ↔ 서버측 스크립트들
*** 서버측 스크립트들 ↔ 파일들
*** 서버측 스크립트들 ↔ 그 밖의 서비스 ↔ DB
[ 사용자 ]
웹 프레임워크에서 사용자들은 웹 페이지의 시각적인 출력부와 인터랙션 입력부에 앉아있는 역활.
사용자는 웹 프레임워크 처리 결과를 보고 → 마우스 클릭 & 키보드 입력 등을 이용해 웹 프레임워크와 상호작용
[ 브라우저 ]
→ 웹 서버에 정보를 제공하거나 제공 받는다.
→ 서버의 데이터를 해석 → 사용자가 실제로 볼 수 있게 처리
→ 키보드, 마우스, 터치스크린 등의 입력 장치를 거쳐 전달된 사용자 인터랙션을 처리
[ 브라우저와 웹 서버 간의 통신 ]
HTTP와 HTTPS 프로토콜을 이용한 일련의 요청들로 구성된다.
HTTP는 발생할 수 있는 요청 형식과 해당 요청들과 HTTP 응답 형식을 정의한다.
HTTPS에는 보안 계층인 SSL/TLS가 추가됨
→ 웹 서버가 브라우저에게 인증서를 제공함으로써 보안성 있는 통신이 가능하게 된다.
그 후 사용자는 접속을 허용하기 전에 인증서 수락 여부를 결정할 수 있다.
[ 브라우저 뷰 그려 내기 ]
실제로 보고 상호 작용할 화면은 웹 서버로부터 받은 여러 종류의 데이터로 이뤄져 있다.
브라우저는 (요청 /응답) 앞부분에 있는 URL로부터 데이터를 읽어 문서 객체 모델(DOM)을 생서하기 위해 HTML 문서를 제공한다.
DOM (Document Object Model) HTML 문서가 루트 노드인 트리 구조 객체 → 트리 구조는 HTMl 문서 구조와 일치한다.
브라우저는 웹 페이지 뷰를 생성하기 위해 각 DOM 요소들을 해석하고 내용을 화면에 표시한다.
브라우저는 웹 페이지 생성을 위해 다중의 웹 서버 요청으로부터 다양한 종류의 데이터를 얻는다.
*** 최종적인 사용자뷰 생성 및 웹 페이지 동작을 정의하기 위한 브라우저가 사용하는 데이터 형태
[ 사용자 상호작용 ]
마우스, 키보드, 터치스크린과 같은 사용자 인터페이스(UI)를 통해 브라우저와 상호작용한다.
브라우저는 사용자의 입력 이벤트를 포착 → 적절한 동작 수행하는 정교한 이벤트 시스템을 갖는다.
ex) 팝업 메뉴 보여주는 것, 실행 중인 클라이언트 측 JS에 서버의 새로운 무서를 올리는 등의 여러 동작 수행
[ 웹 서버 ] - 브라우저의 요청 사항을 처리하는 일에 중점.
브라우저는 문서 요청, 데이터를 보냄, 데이터를 얻기 위해 AJAX 요청할 수도 있다.
웹 서버는 어떤 동작을 수행할지 결정하기 위해 HTTP헤더외에 URL을 사용한다.
<아파치와 IIS 같은 대부분의 웹서버들은 .html .css, 미디어 파일과 같이 정적 파일들을 제공하도록 되어 있다.>
서버의 데이터를 변경하는 POST 요청과 백엔드 서비스와 통신하는
AJAX 요청을 처리하기 위해, 웹 서버는 서버 측 스크립트와 함께 작동되어야 한다.
서버 측 스크립트 → 브라우저가 요청하는 작업을 수행하기 위해 웹 서버가 실행 할 수 있는 것.
[ PHP, Python, C, C++, C#, Perl, Java, Go 등 ]
웹 서버들은 서버 측 스크립트를 포함시킨 후 브라우저가 요청한 특정 URL 위치에 추가할 수 있는 구조를 제공
서버 측 스크립트는 코드 실행하여 응답을 바로 생성 or 중요 정보를 얻기 위해 D
B와 같은 백엔드 서버와 연결 후 해당 정보를 이용해 적절한 응답을 생성 후 보낸다.
[ 백엔드 서비스 ] → 웹 서버의 백그라운드에서 실행되는 서비스
브라우저에 대한 응답을 생성하기 위해 사용되는 데이터를 제공한다. 가장 흔히 사용되는건 DB이다.
3장) Node.js 입문 (0) | 2019.12.23 |
---|---|
2장) 자바스크립트 기본 학습 (2) (0) | 2019.12.20 |
2장) 자바스크립트 기본 학습 (1) (0) | 2019.12.20 |
ep) 책 소개 (0) | 2019.12.19 |