React는 Client Side Rendering으로 동작한다.
때문에 SEO(Search Engine Optimization, 검색 엔진 최적화)에 불리하다.
그래서 SEO를 원활하게 하기 위해서는 첫 페이지의 경우, React로 구현한 Javascript 코드를 HTML로 변환해서 서버에서 내려받는 Server Side Rendering으로 동작하게 해야 한다.
- 대표 프레임워크 : Next.js, Remix
React 전용 SSR 프레임워크이다.
# with npm
npx create-next-app@latest
# with yarn
yarn create next-app
# with pnpm
pnpm create next-app
or
package.json파일 생성
npm init
next
, react
, react-dom
설치
# with npm
npm install next react react-dom
# with yarn
yarn add next react react-dom
Next 서버 작동
npm run dev
Next에서 기본적으로 생성되는 pages 폴더(없다면 추가하기)에 새로운 파일을 만들면,
이를 자동으로 인식해 라우팅까지 해주고, Server Side Rendering으로 동작한다.
pages 폴더에 Info.js 만들기
// Info.js
import React from 'react'
function Info() {
return <div>My info</div>
}
export default Info
해당 경로로 들어가 결과 확인
Next.js에서는 모든 페이지를 'Pre-rendering'한다.
이는, Client의 JavaScript에서 모든 작업을 수행하는 대신, 각 페이지에 대해 미리 HTML을 생성한다.
그렇기 때문에 Pre-rendering을 하면 SEO가 가능하다.
생성된 각 HTML은 해당 페이지에 필요한 최소한의 JavaScript 코드와 연결하며,
브라우저에 의해 페이지가 로드되면 JavaScript 코드가 실행되어 페이지가 완전히 인터랙티브하게 되는 것을 Hydration이라 한다.
next/link
를 import 함으로써 Client Side Rendering으로 동작하도록 구현 할 수 있다.
import Link from 'next/link'
function Home() {
return (
<ul>
<li>
<Link href="/">Home</Link>
</li>
<li>
<Link href="/my/account">My Account</Link>
</li>
<li>
<Link href="/my/info">My Info</Link>
</li>
</ul>
)
}
export default Home
이 외에도 다양한 API Reference가 있다.