- 브라우저의 동작원리

https://d2.naver.com/helloworld/59361

1) 렌더링 엔진

렌더링 엔진은 HTML 문서를 파싱하고 "콘텐츠 트리" 내부에서 태그를 DOM 노드로 변환한다. 그 다음 외부 CSS 파일과 함께 포함된 스타일 요소도 파싱한다. 스타일 정보와 HTML 표시 규칙은 "렌더 트리"라고 부르는 또 다른 트리를 생성한다.

 

렌더트리를 통해 우리가 보는 화면이 된다.

 

기본적으로 코드는 동기적, 순차적 (좌 -> 우, 위 -> 아래)

자바스크립트 해석기보다 렌더링 엔진이 먼저있기 때문에 스크립트 만나면 렌더링 엔진 중단한다

 -> 바디태그의 하단 또는 헤더에 넣을경우 'defer' 속성 넣어주기 

 

2) 자바스크립트 엔진(해석기)

- 싱글스레드 기반의 non-blocking

- 비동기 프로그래밍 : 다른 업무를 기다리지않고 진행한다.

- Callback함수의 두가지 의미

  -> 이벤트 발생시 호출되는 예약함수 

     : 클릭 이벤트시 호출될 함수를 등록한다. (=콜백함수 등록)

      그리고, 클릭 이벤트 방생시 등록된 호출함수가 호출된다.

  -> 일반 함수의 Parameter로 등록되는 함수

     : test(1, run) 자바스크립트의 함수는 'object 값' (원시값 x)

Sync 동기 Async(Asynchronous 비동기
특정 동작이 끝난 이후, 다른 동작을 수행하기 시작함 1. Callback 함수 등록 처리( 호출하지 않음)
2. 다른 동작을 수행
 -> 내부적으로 다른 동작을 수행하면서도,
     지속적으로 Event가 발생했는지 감시
3. 특정 이벤트 발생시, Callback함수 수행됨

- Promise (비동기 작업을 좀더 편하게 할수 있도록 도입)

 -> new Promise((reslove,reject) => {});

pending 상태 - 대기 fulfilled 상태 - 이행 rejected 상태 - 실패
resolve나 rejected가 실행되기 전 resolve호출 시 reject호출 시

- async await 

 -> promise를 잘 쓰기위해 사용

 -> async는 함수 앞에 위치/ await는 함수 내부에 위치

 -> promise를 반환

 

비동기의 역사
setTimeout(callback hall)
-> promise (then..then...)
-> async/ await -> ~~ -> ~~

비동기 "통신의 역사"
XMLHttprequest
-> fetch
-> axios

 

- axios

 -> 가장 널리 쓰이는 http 통신 라이브러리

 - Vue/React에서도 권고 라이브러리로 axios가 지정됨

 - Promise형태 리턴

 - 사용에 편리

'WEB > Javascript' 카테고리의 다른 글

[21.08.10] 비동기 프로그래밍1  (0) 2021.08.10
[21.07.22]Google페이지 만들기  (0) 2021.07.22
[21.07.21] Javascript 실습 - 영화 정보 수집  (0) 2021.07.21
[21.07.20] Javascript기본  (0) 2021.07.21

+ Recent posts