-
react next 공부하기(앱 만들기) - 3성장과정(dev)/Frontend(feat. Vue, Next.js) 2022. 7. 28. 22:07
React 로 빌드하기 위해 고려해야하는 사항들
- webpack 과 같은 번들러를 사용하여 번들링 되고 babel 과 같은 컴파일러 사용하여 변환
- 코드 분할과 같은 production 최적화
- 성능 및 seo 를 위해 일부 페이지를 정적으로 사전렌더링 할 수 있다 -> serverside rendering, client side rendering 둘다 가능
- React 앱을 data store에 연결하기 위해 서버측 코드를 작성해야할 수 있다.
Next.js
- 위에 언급한 문제들에 대한 솔루션 제공
- 직관적인 페이지 기반 라우팅 시스템
- pre-rendering, static-site-generation(정적 생성 ssg), server-side-rendering
- 자동 코드분할 (페이지 로드 속도 up)
- 최적화된 prefetching를 통한 클라이언트 측 라우팅
- 내장 css 및 sass 지원 및 모든 css-in-js(대표적 css-in-js 라이브러리로는 styled component) 라이브러리 지원
- fast refresh를 지원하는 개발환경
- serverless 함수로 api endpoint 를 빌드하기 위한 api 경로
- 완전한 확장 기능
seo
검색엔진 최적화
ssg
static site generate (정적 사이트 생성)
Next.js 앱 만들기 시작
npx create-next-app nextjs-blog --use-npm --example "https://github.com/vercel/next-learn/tree/master/basics/learn-starter"
뒤에 써져있는 github 링크가 기본코드이다.
서버 실행
$ npm run dev
빠른새로고침 기능
서버를 실행시킨 상태에서 소스 내부를 수정하면 바로 텍스트가 변경된다.
학습내용
- 통합파일 시스템 라우팅을 사용하여 페이지 단위를 만듦
- Link 구성요소를 사용하여 페이지 간에 client-side navigation 을 활성화
- 코드 분할 및 prefetching에 대한 기본 제공 지원
Pages in Next.js
- page는 'pages' 디렉토리의 파일에서 export 한 React 컴포넌트
ex) 'pages' 아래에 'posts/first-posts.js' 파일을 만들고 내부에서 아래 코드를 입력하고 실행시키면, {url주소}/posts/first-post 입력 시 해당 페이지가 표시된다.
export default function FirstPost() { return <h1>First Post</h1>; }
링크 컴포넌트
html에서 사용하는 <a> 태그 대신에 <Link> 태그를 사용한다. {' '} 를 더해 띄어쓰기를 만들어준다.
Link 컴포넌트가 a 태그와 같은 역할을 하기 때문에 href 로 가려는 endpoint 를 입력하고 안에 <a> 태그를 넣어주면 된다.
// navigation 을 사용하기 위해서 next 에서 제공하는 link를 import import Link from 'next/link'; ... //다음과 같이 하면 페이지 이동 가능 ... <h1 className="title"> Read{' '} <Link href="/posts/first-post"> <a>this page!</a> </Link> </h1> ...
Client-Side Navigation
- client side navigation 은 브라우저에서 수행하는 기본 navigation 보다 빠른 javascript 를 사용하여 page transition(전환) 이 일어난다.
- 확인방법: html 에 배경색을 설정한 후 페이지 이동을 해보면 화면 깜빡임 없이 배경이 계속 노란색이다.
a 태그로 하면 페이지 전체 새로고침이 일어나기 때문에 깜빡거린다. - 장점:
- 요청한 페이지 코드만 로드하므로 특정 페이지에서 오류가 발생해도 다른 페이지에는 문제가 없다.
- 별도의 라우팅 라이브러리가 필요하지 않음
- Link 구성 요소가 브라우저의 viewport 에 나타날 때마다 next.js 가 background 에서 자동으로 링크되어있는 페이지들의 코드를 prefetch 한다. --> 자동 최적화
- 외부 링크로 보내는 방법: Link 말고 a 태그 사용하기
'성장과정(dev) > Frontend(feat. Vue, Next.js)' 카테고리의 다른 글
vue nuxt path param 변경하기 (0) 2022.08.26 vue nuxt default layout 화면에 맞게 커스터마이징하기 (0) 2022.08.08 react next 공부하기(기본개념) - 2 (0) 2022.07.28 react next 공부하기(기본개념) - 1 (0) 2022.07.27 [vue] google map 적용하기 , vue2-google-map 사용 (0) 2022.05.12