브라우저 동작 과정에 대한 질문입니다.
290
작성한 질문수 87
브라우저가 프론트서버에서 index.html을 요청하고 Index.html을 받은뒤 브라우저에서 html을 파싱하다가 script 태그를 만나면 해당 자바스크립트를 서버에 다시 요청해서 받아서 다운로드 받는것으로 알고있습니다. 강의에서 ssr 일 시에 html 과 데이터를 같이 받아온다고 하셔서 이해했었던 개념들과 같이 정리를 해보았는데
1. index.html요청
2. index.html을 브라우저에서 파싱(돔생성)
3. html 파싱하다가 script 태그를 만나면 javascript 를 서버에 요청 및 실행
4. script의 defer을 이용하여 html 파싱 이후 실행되게 만듬. 화면은 html을 뿌리고 있고 javascript가 다운로드가 완료되지 않았다면 인터렉션 효과는 잠시동안 발생되지 않을 수 있음.
5. javascript 실행 중에 비동기 data fetch 로직이 있으면 그때 프론트서버가 백엔드서버에 데이터 요청 및 응답을 받음.(브라우저가 백엔드서버에 데이터 요청을 하는지 헷갈립니다..)
6. data 를 받아와서 ... ?
6번에서 막히게 됩니다. index.html + data를 같이 받아와서 화면에 뿌려준다고 하셨는데 이해했었던 개념들이랑 충돌이나서 고민하고있습니다.. index.html에 데이터를 출력해줘야되는 영역이 있다면 바로 화면에 출력해주는 것이 아니라 data를 다 받아온뒤 index.html에 같이 뿌려주는 것인가요?
답변 4
6
1. GET /로 요청을 보낼 때 프론트서버에서 pages/index.js를 읽습니다. 그리고 거기서 wrapper.getServerSideProps를 발견하면 그걸 실행하고, 그 때 백엔드서버로 axios 요청이 가게 됩니다. 그 데이터를 받아와 index.js의 리액트 부분을 렌더링하면서 데이터도 같이 넣어주는 겁니다.
2. wrapper.getServerSideProps, wrapper.getStaticProps 등이 해당됩니다.
3번은 이 강좌랑 상관이 없습니다. 왜냐하면 저건 일반적인 스크립트이기 때문이죠. 일반적인 html처럼 실행됩니다. 프론트서버로부터 응답을 받은 후 script를 파싱하여 저 부분이 실행됩니다. 반면에 next.js에서는 wrapper.getServerSideProps가 프론트 서버에서 먼저 실행됩니다. 그 후 응답 데이터와 react 부분이 합쳐져서 응답으로 보내집니다.
1
SSR에서는 4 5번 과정이 1~2번 사이에 일어납니다.
1. 특정 페이지 요청(index.html처럼 html을 요청하는 게 아닙니다. 페이지랑 html은 다른 개념입니다)
2. 프론트서버에서 특정 페이지에 들어있는 데이터 요청 파악 후 백엔드서버로 요청 보내서 받아옴
3. 받아온 데이터와 페이지 화면을 합쳐 index.html로 만들어서 프론트 전송
4. index.html을 브라우저에서 파싱(돔생성)
5. html 파싱하다가 script 태그를 만나면 javascript 를 실행
...
0
잘 이해가 가지 않습니다.. 일단 계속 뒷부분 강의를 듣고있지만 앞에서 헤매고있습니다ㅠㅠ
1. index.html처럼 html을 요청하는 것이 아니라는 것. 즉 우리가 처음에 사이트에 접속하게 되면 자동으로 / 이 라우트로 접속하게 되는데 프론트서버단에서 코드로 res.get('/', index.html을 반환하는 로직)을 짜게되듯이 / 라는 페이지요청을 하면 / 에 맞는 .html 파일을 반환해준다는 건가요?
2. 프론트서버에서 특정 페이지에 들어있는 데이터 요청 파악 후 <- 이 말의 의미가 무엇일까요? ... 이부분에 대한 데이터 요청 로직은 프론트서버 로직에 있는건가요 ? 제가 지금 헷갈리는 것이 index.html에 포함되어져있는 javascript 파일에 들어가는 fetch로직이랑 헷갈려하는것같습니다.
3. 예를 들어 밑의 코드처럼 아주 간단한 코드가 있다고 한다면 브라우저 동작과정이 어떻게 되는건지 한번만 설명 가능하실까요?
넥스트 버젼 질문
0
77
2
로그인시 401 Unauthorized 오류가 뜹니다
0
89
1
무한 스크롤 중 스크롤 튐 현상
0
175
1
특정 페이지 접근을 막고 싶을 때
0
103
2
createGlobalStyle의 위치와 영향범위
0
96
2
인라인 스타일 리렌더링 관련
0
91
2
vsc 에서 npm init 설치시 오류
0
146
2
nextjs 15버전 사용 가능할까요?
0
158
1
화면 새로고침 문의
0
121
1
RTK에서 draft, state 차이가 있나요?
0
153
2
Next 14 사용해도 될까요?
0
452
1
next, node 버전 / 폴더 구조 질문 드립니다.
0
349
1
url 오류 질문있습니다
0
211
1
ssh xxxxx로 우분투에 들어가려니까 port 22: Connection timed out
0
372
1
sudo certbot --nginx 에러
0
1274
2
Minified React error 콘솔에러 (hydrate)
0
470
1
카카오 공유했을 때 이전에 작성했던 글이 나오는 버그
0
247
1
프론트서버 배포 후 EADDRINUSE에러 발생
0
327
1
npm run build 에러
0
518
1
front 서버 npm run build 중에 발생한 에러들
0
381
1
서버 실행하고 브라우저로 들어갔을때 404에러
0
338
2
css 서버사이드 랜더링이 적용되지 않아서 문의 드립니다.
0
287
1
팔로워 3명씩 불러오고 데이터 합쳐주는걸로 바꾸고 서버요청을 무한으로하고있습니다.
0
237
2
해시태그 검색에서 throttle에 관해 질문있습니다.
0
201
1





