요구사항 꼼꼼히 읽기 ⇒ 구현 ⇒ 제출 전 검토
파일 관리
반응형
break point는 모든 페이지에서 똑같아야 한다 (컴포넌트 마다 다른 팀이 있었다)
데스크탑, 테블릿, 모바일 ⇒ 보통 2개 (1024px, 768px)
보통 우선순위는 768px 먼저 구현 (초기 스타트업)
미디어쿼리를 정했으면 ⇒ 상수화 👀
프론트엔드 개발자의 주요 역량중 하나는
마케터와의 협업이자 SEO를 챙기는 것 입니다 👀✨ CSR과 SSR 방식이 갖는 특성이 SEO에 어떤 영향을 미치는지 알기 ✨
검색 봇 ⇒ 자기만의 알고리즘으로 분석함 ⇒ 구글 페이지랭크
크롤러는 페이지의 신뢰성이 중요하다(실제로 클릭을 얼마나 하는지)
결론: 검색 결과로 초반에 나오는 사이트는 점수가 높은 사이트다 👀
- SEO는 마케터와 프론트엔드의 합작품
잘 노출되게 한다
robots.txt
검색 봇 (크롤러) 약속 🚨
네이버 , 구글 클로러 다들 다르다
User-agent: *
모든 페이지 다 들어와도 되
Disallow:
shop/admin 은 금지 ㅋㅋ
sitemap.xml
?? generator로 만들면된다
HTML을 semantic 하게 만들어야 한다
페이지 이동하는 경우 ⇒ <a href=””>
무조건 사용!
페이지 에서 중요한 경우 => <h1>, <h2>
header
, main
, footer
, nav
, section
, aside
잘 사용하기
클릭하면 팝업 뜨고, 등등 기능
백엔드랑 프론트랑 코드가 같이 있던 시절
SPA (Single Page Application)
FE와 BE가 명확히 분리되었다
CRA 엄청 편하다 ⇒ 오 근데 검색이 안되네? ⇒ CSR 때문이구나 🤯
결론: SSR로 만들어야 한다
그나마 할 수 있는 것은 meta tag 넣기
네이버는 아직 SPA를 지원하지 않는다
사용하는 이유 ⇒ 검색 잘되게 하려고 😎
장점
서버에서 미리 페이지를 구성하여 사용자에게 보여준다 ⇒ CSR의 단점인 ‘첫 페이지 깡통' 상태를 극복할 수 있음
CSR 보다 페이지 구성 속도는 늦지만, 전체적인 속도(페이지 로딩 완료)는 더 빠르다
페이지 이동 간 서버 요청이 없어서 페이지 깜박임이 없다
코드 스플리팅 : js 파일을 나눠서 처음 로딩을 빠르게 한다
admin : 검색할 이유가 없다 ⇒ 관리자만 사용
한정된 사용자만 볼 수 있는 사이트
일부분만 CSR 사용 가능
페이지 기반 라우팅 시스템 (동적 라우팅 가능)
pre-rendering, 페이지별 정적 파일 생성과 서버사이드 렌더링 지원
코드 스플리팅
CSS, Sass 기본 지원 및 다른 CSS-in-JS 라이블러리 지원
Next.js 는 정해진 폴더 구조가 있다
npm run dev
로 시작한다
npm run build
하고 어떻게 구성되어있나 확인해보기
a. 이번 과제때 시간 있으면 OG, 404 만들어보기
라우팅 하는법
a. pages 밑에서는 components 만들지 말기
b. api 폴더는 서버인가요? ⇒ 프론트에서만 필요한 api를 만들 수 있다
c. 동적 라우팅 하고 싶으면 [대괄호]
사용
이미지 관리
a. s3에 올리기 ⇒ 최초 로드는 느림, 관리는 편함
b. import로 불러오기 ⇒ build 했을때 소스코드에 들어감 ⇒ 용량 커짐
c. public폴더 /images/bg.png
루트 경로를 통해 서버 요청으로 가져오기
Next.js 초기세팅 코드에는 해당 파일이 없기 때문에, 개발자가 직접 추가해야 합니다! page폴더 밑에 _app.tsx 파일을 생성해 주세요 🙌🏻
예시) styled-components, 모든 페이지에 필요한 reset-css
title 태그는 왠지 _document.tsx에서 추가해야할 것 같은데 _app.tsx에서 추가해야해서 언급했습니다.
페이지 이동할 때마다 유지해야 하는 스타일이나 레이아웃 적용
페이지 이동할 때 유지해야할 state 관리
componentDidCatch 라이프사이클로 공통 에러 처리
페이지에 공통 로직을 통해 데이터를 주입해야하는 경우
모든 페이지에 필요한 css를 적용하는 경우
font 파일을 가져오거나, script 태그로만 넣을 수 있는 라이브러리가 필요하거나, Google Analytics 같은 것을 설정할때 html의 head, body 태그가 필요합니다.
구글 폰트를 추가해보겠습니다. self closing 되어있는 Head 컴포넌트를 열고 구글 폰트 link를 추가합니다.
주의할 점은 _document.js는 서버에서만 실행되는 파일이므로 window같은 브라우저 전역객체를 사용할 수 없습니다. 또한 컴포넌트에 필요한 공통 로직의 경우 _document.js가 아닌 _app.js에서 추가해야 합니다.
Next.js에서 페이지 이동은 "next/link"의'< Link > 컴포넌트로 합니다.
< a > 태그를 대체하는 것인데 < Link >를 사용해야 CSR
을 할 수 있습니다.
우리가 Next.js의 메서드를 어떻게 활용하느냐에 따라 빌드시점에 세가지 방식의 렌더링 중 하나로 결정됩니다
정적생성에 적합한 페이지는 회사 소개 페이지, 개인정보처리 방침 같은 설명 페이지, 정적 블로그 페이지 등이 있습니다.
정적 생성을 위해서는 getInitialProp
나 getServerSideProps
메서드를 사용해서 데이터를 가져오거나 가져오지 않게 컴포넌트를 만든다.
Next.js에서 권장하는 렌더링 방식이며, 한 번 응답한 후에는 CDN(content delivery network)이 파일을 기억(캐쉬, cache)하여 응답하기 때문에 화면을 그리는 속도가 굉장히 빨라지고 불필요한 서버 요청이 줄어듭니다.
SSR은 페이지 요청이 있으면 server side에서 api를 호출하고 데이터를 응답받아서 서버측에서 HTML을 완성시키고 클라이언트에 전달합니다.
페이지를 요청할 때마다 SSR을 하고 싶은 경우는 getInitialProps
나 getServerSideProps
메서드를 사용해야합니다.
componentDidMount
라이프사이클이나 useEffect
훅에서 데이터를 요청합니다.