Next.js + Typescript web template 만들기
📌 참고 next.js를 통해 보는 SSR Cycle
페이지 요청이 오면 수행하는 순서가 다음과 같다
1)Frontend Server
에서GET
요청을 받는다
2) 요청에 맞는page
를 찾는다
3)_app.tsx
(next.js 사용시 최초로 실행되는 파일)의getInitialProps
가 있다면 실행
4)Page Component
안에getInitialProps
가 있다면 실행
5)_document.tsx
의getInitialProps
가 있다면 실행
6) 모든props
를 구성하고_app.tsx
>Page Component
순으로 렌더링
7) 모든 콘텐츠를 구성하고_document.tsx
를 실행하여html
형태로 출력
npx create-next-app@latest --ts
# or
yarn create next-app --typescript
💬 열심히 설치 중..
💬 성공!!! http://localhost:3000
npm run dev
# 자동 리프레시 가능
📌 참고!!
create-next-app 으로 설치하면
1. 컴파일과 번들링이 자동으로 된다(webpack 과 barbel)
2. 자동 리프레시 기능으로, 수정 시 화면에 바로 반영된다
3. 서버사이드 렌더링(Server Side Rendering)이 지원된다
4. Static File 을 지원한다
npm install semantic-ui-react semantic-ui-css
# or
yarn add semantic-ui-react semantic-ui-css
// _app.tsx
import 'semantic-ui-css/semantic.min.css'
📌 참고!!
_app.tsx 을 이용하면
1. 페이지 전환 시 레이아웃을 유지할 수 있다
2. 페이지 전환 시 상태값을 유지할 수 있다
3. componentDidCatch를 이용해서 커스텀 에러 핸들링을 할 수 있다
4. 추가적인 데이터를 페이지로 주입시키는 것이 가능하다
5. 글로벌 CSS를 이곳에 선언한다
📌 참고로 _app.tsx 를 좀 더 설명하자면,
Component
: 현재 페이지를 의미pageProps
: 데이터 패칭 메서드를 통해 미리 가져온 초기 객체function MyApp({ Component, pageProps }: AppProps) {
// Props로 넘어온 Component는 현재 페이지를 의미.
// 페이지 전환 시에 이 Component Props가 변경된다
// pageProps는 데이터 패칭 메서드를 통해 미리 가져온 초기 객체.
// 이 메서드를 사용하지 않는다면 빈 객체가 전달되고 SSR 시
return <Component {...pageProps} />;
}
export default MyApp;