20210327(토)

1. 학습 날짜

  • 2021-03-27

2. 학습 시간

  • 17:00 ~ 21:00

3. 학습 범위 및 주제

  • 자바스립트 학습하기

4. 학습 목표

  • 강의 듣기

5. 학습 정리

6. 상세 학습 내용

  • 브라우저에서 페이지에 접속하면 먼저 파일을 다운로드 받는다. 파일을 다운로드 받으면 그 다음에는 어떤 동작이 일어나는가?

  • 우선 브라우저는 html 파일을 읽어서 한줄 한줄을 DOM 으로 만든다.

    • 만약 html파일에 script 태그가 있으면 그 DOM 작성을 멈추고 먼저 script 태그를 실행한다.

    • 따라서 만약 script 태그 뒤에 존재하는 tag 를 가져오는 코드가 있다면 여기서 에러가 발생한다.

    • 따라서 script 의 순서는 중요하다.

    • 가장 쉽게 처리하는 방법은 script 를 defer 옵션을 주고 다운로드 하는 방법이다.

  • 이후에는 css 를 읽고 CSSOM 을 만든다. CSSOM 이란 css object model 의 약자다 (DOM이랑 같다.)

  • 만들어진 DOM 과 CSSOM 을 합쳐서 렌더링트리를 만든다.

    • 이 렌더링 트리에서는 실제로 사용자에게 보여줄 요소만을 트리에 포함시킨다.

    • 예를 들면 display: none 은 실제로 유저에게 보여주지 않을 정보이므로 이 렌더링 트리에서는 제외된다.

    • 이런 이유 때문에 transition 이 동작하지 않았던것.

  • 여기까지가 기초작업이다. DOM과 CSS 를 이용해서 rendering-tree 를 만들면 아래의 동작을한다.

  • layout

    • layout 과정에서는 rendering-tree 결과의 각각의 요소들이 어느 위치에 얼마만큼의 크기를 가질지 계산한다.

    • 여기서 모든 상대적인 값들이 절대적인 값으로 변환된다.

    • 이런 계산의 결과로 스타일 및 기하학적 형태등도 모두 파악한다.

  • paint

    • 렌더링 트리의 요소들이 계산 되었다면 이제 계산된 값을 실제로 그리는 작업을 수행한다.

    • 여기서 주의할 건, 실제로 그리는 작업이란 브라우저에 나타낸다는게 아니라 각각의 부분을 준비만 해놓는것.

    • 이게 무슨말이냐면, 브라우저는 모든 계산된 요소를 묶는 과정을 갖는다.

    • 당연한 말이겠지만 모든 요소요소 각각으로 처리하면 성능이 떨어질 수 밖에 없다.

    • 따라서 브라우저는 성능 개선을 위해 요소를 묶어서 레이어로 만든다.

    • 여기서 주의할게 있는데 이렇게 묶었는데 묶여있는 요소의 스타일이 계속 변경되서 브라우저가 계속 그림을 그려야하는 과정이 반복된다면 그 요소가 속해있는 레이어는 하나으 ㅣ요소의 계속된 변경으로 인해 레이어 자체가 계속 그려져야하므로 성능이 매우 떨어지게된다.

    • 따라서 계속 변경될 스타일을 가진 요소에는 css 로 will-change 옵셥을 줄 수 있다. 이렇게 되면 그 요소만 따로 layer 로 묶이게 되서 위와 같은 문제에서 벗어날 수 있게 된다ㅏ.

  • composition

    • 자 이제 만들어진 모든 레이어들을 실제로 브라우저에 위치시킨다.

7. 오늘 학습 내용에 대한 개인적인 총평

  • 어제, 오늘 너무 놀았다. 다시 열심히하자!

8. 다음 학습 계획

  • 자바스크립트 공부

Last updated