프론트엔드/Next.js
Next.js 설치 및 초기세팅
카엔입니다
2022. 1. 16. 17:55
Next.js
vercel
기능
- SSR지원
- 페이지 기반 클라이언트 사이드 라우팅
- Hot Module Replacement를 통한 개발 환경에서 코드 자동 적용
- 코드 스플릿팅을 통한 빠른 페이지 로드
- SPA에 단점인 보고싶은 페이지를 불러올때 모든 페이지에 대한 정보가 받아지는 것을 개선한 것으로써 보고싶은 페이지에 대한 정보만 불러오게 유동적으로 해결해주는 방법입니다
- Babel / Webpack 환경설정 및 커스터마이징 가능
- Express나 Node.js 서버와 함께 사용 가능
setting
yarn add react react-dom next
// 타입스크립트 버전
yarn create next-app --typescript
추가적인 Sass 설치
npm i sass
설치 후 package.json 수정
"scripts": {
"dev": "next",
"build": "next build",
"start": "next start"
}
모든 설치가 끝나면 다음 명령어를 통해 dev 서버를 실행하고 http://localhost:3000에 접속하면 확인할 수 있습니다
npm run dev
or
yarn dev
라우팅
pages
Next.js에서는 특수한 디렉토리인 pages 폴더에서 라우터를 관리합니다
원하는 라우터명으로 폴더를 생성하고 해당 파라미터에 메인화면으로 보여주고 싶은 파일은 index.tsx
로 작성합니다
그 외 다른 파일들은 소문자로 만들어서 넣어주면됩니다
Link
리액트와 동일하게 Link 태그를 사용해서 이동할 수 있지만 href
를 사용하며 내부에는 a
태그나 커스텀 컴포넌트가 들어옵니다
<Link href="/test" />
<a>Test Page</a>
</Link>
또한 a태그가 들어올시 Link 태그 안에 passHref
를 작성해줘야합니다
전체적인 모습은 다음과 같습니다
import Link from 'next/link'
const Test = () => (
<div>
<Link href="/test" passHref />
<a>Test Page</a>
</Link>
<p>Hello Next.js</p>
</div>
)
export default Test
다이나믹 라우팅
추후 작성
공통 컴포넌트 사용
공통적으로 사용하는 Header나 Layout 같은 컴포넌트들은 한번 생성하면 유용하게 사용할 수 있습니다
위와 같은 컴포넌트들을 생성했다면 pages/index.tsx
에 가지고와서 사용할 수 있습니다
혹은 아래처럼 Layout 컴포넌트에 Header를 넣어주고 children으로 받아와서 사용하면 됩니다
import Header from './Header'
const LayoutSection = {
...
}
const Layout = ({children}) => (
<LayoutSection>
<Header />
{children}
</LayoutSection>
)
export default Layout
위와 같이 만든 컴포넌트를 pages/index.tsx
에 적용해준다면 공통 컴포넌트를 사용할 수 있습니다
사용 예시
Next.js로 작업중인 프로젝트입니다
실제로 사용중인 코드를 확인하시고 이해에 도움이 되셨으면 합니다
부족한 부분은 댓글로 알려주시면 감사하겠습니다