Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[#34] docs: get-static-paths 번역 #35

Merged
merged 2 commits into from
Jul 31, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@ description: Fetch data and generate static pages with `getStaticPaths`. Learn m

# getStaticPaths

If a page has [Dynamic Routes](/docs/pages/building-your-application/routing/dynamic-routes) and uses `getStaticProps`, it needs to define a list of paths to be statically generated.
페이지에 [동적 라우트](/docs/pages/building-your-application/routing/dynamic-routes)가 있고 `getStaticProps`를 사용하는 경우 정적으로 생성할 경로 목록을 정의해야 합니다.

When you export a function called `getStaticPaths` (Static Site Generation) from a page that uses dynamic routes, Next.js will statically pre-render all the paths specified by `getStaticPaths`.
동적 경로를 사용하는 페이지에서 `getStaticPaths` (정적 사이트 생성) 라는 함수를 내보내면 Next.js는 `getStaticPaths`에 지정된 모든 경로를 정적으로 미리 렌더링합니다.

```tsx filename="pages/repo/[name].tsx" switcher
import type {
Expand All @@ -30,9 +30,9 @@ export const getStaticPaths = (async () => {
params: {
name: 'next.js',
},
}, // See the "paths" section below
}, // 아래의 "paths" 섹션을 참조하세요.
],
fallback: true, // false or "blocking"
fallback: true, // false 또는 "blocking"
}
}) satisfies GetStaticPaths

Expand All @@ -59,9 +59,9 @@ export async function getStaticPaths() {
params: {
name: 'next.js',
},
}, // See the "paths" section below
}, // 아래의 "paths" 섹션을 참조하세요.
],
fallback: true, // false or "blocking"
fallback: true, // false 또는 "blocking"
}
}

Expand All @@ -76,70 +76,69 @@ export default function Page({ repo }) {
}
```

The [`getStaticPaths` API reference](/docs/pages/api-reference/functions/get-static-paths) covers all parameters and props that can be used with `getStaticPaths`.
[`getStaticPaths` API 레퍼런스](/docs/pages/api-reference/functions/get-static-paths)는 `getStaticPaths`와 함께 사용할 수 있는 모든 매개변수와 프로퍼티를 다룹니다.

## When should I use getStaticPaths?

You should use `getStaticPaths` if you’re statically pre-rendering pages that use dynamic routes and:
동적 라우트를 사용하는 페이지를 정적으로 사전 렌더링할 때 다음과 같은 경우 `getStaticPaths`를 사용해야 합니다:

- The data comes from a headless CMS
- The data comes from a database
- The data comes from the filesystem
- The data can be publicly cached (not user-specific)
- The page must be pre-rendered (for SEO) and be very fast — `getStaticProps` generates `HTML` and `JSON` files, both of which can be cached by a CDN for performance
- 데이터가 헤드리스 CMS에서 제공되는 경우
- 데이터가 데이터베이스에서 제공되는 경우
- 데이터가 파일 시스템에서 제공되는 경우
- 데이터가 공개적으로 캐시될 수 있는 경우(특정 유저가 아닌)
- 페이지가 사전 렌더링되어야 하고(SEO를 위해) 매우 빨라야 하는 경우 - `getStaticProps`는 성능을 위해 CDN에서 캐시할 수 있는 HTML 및 JSON 파일을 생성합니다.

## When does getStaticPaths run

`getStaticPaths` will only run during build in production, it will not be called during runtime. You can validate code written inside `getStaticPaths` is removed from the client-side bundle [with this tool](https://next-code-elimination.vercel.app/).
`getStaticPaths`는 프로덕션에서 빌드하는 동안에만 실행되며 런타임 중에는 호출되지 않습니다. [이 도구](https://next-code-elimination.vercel.app/)를 사용하여 클라이언트 측 번들에서 `getStaticPaths` 내부에 작성된 코드가 제거되었는지 확인할 수 있습니다.

### How does getStaticProps run with regards to getStaticPaths

- `getStaticProps` runs during `next build` for any `paths` returned during build
- `getStaticProps` runs in the background when using `fallback: true`
- `getStaticProps` is called before initial render when using `fallback: blocking`
- `getStaticProps``next build` 도중 반환된 모든 `paths`에 대해 빌드 중 실행됩니다.
- `getStaticProps``fallback: true`를 사용할 때 백그라운드에서 실행됩니다.
- `getStaticProps`는 `fallback: blocking`을 사용할 때 초기 렌더링 전에 호출됩니다.

## Where can I use getStaticPaths

- `getStaticPaths` **must** be used with `getStaticProps`
- You **cannot** use `getStaticPaths` with [`getServerSideProps`](/docs/pages/building-your-application/data-fetching/get-server-side-props)
- You can export `getStaticPaths` from a [Dynamic Route](/docs/pages/building-your-application/routing/dynamic-routes) that also uses `getStaticProps`
- You **cannot** export `getStaticPaths` from non-page file (e.g. your `components` folder)
- You must export `getStaticPaths` as a standalone function, and not a property of the page component
- `getStaticPaths`는 **반드시** `getStaticProps`와 함께 사용해야 합니다.
- `getStaticPaths`는 [`getServerSideProps`](/docs/pages/building-your-application/data-fetching/get-server-side-props)와 함께 **사용할 수 없습니다.**
- `getStaticPaths`는 페이지가 아닌 파일(예: 컴포넌트 폴더)에서 익스포트 **할 수 없습니다.**
- `getStaticPaths`는 페이지 컴포넌트의 프로퍼티가 아닌 독립형 함수로 내보내야 합니다.

## Runs on every request in development

In development (`next dev`), `getStaticPaths` will be called on every request.
개발 단계 (`next dev`)에서는 모든 요청에 대해 `getStaticPaths`가 호출됩니다.

## Generating paths on-demand

`getStaticPaths` allows you to control which pages are generated during the build instead of on-demand with [`fallback`](/docs/pages/api-reference/functions/get-static-paths#fallback-blocking). Generating more pages during a build will cause slower builds.
`getStaticPaths`를 사용하면 [`fallback`](/docs/pages/api-reference/functions/get-static-paths#fallback-blocking)을 사용하여 온 디맨드 대신 빌드 중에 생성할 페이지를 제어할 수 있습니다. 빌드 중에 더 많은 페이지를 생성하면 빌드 속도가 느려집니다.

You can defer generating all pages on-demand by returning an empty array for `paths`. This can be especially helpful when deploying your Next.js application to multiple environments. For example, you can have faster builds by generating all pages on-demand for previews (but not production builds). This is helpful for sites with hundreds/thousands of static pages.
`path`에 대한 빈 배열을 반환하여 모든 페이지 생성을 온 디맨드 방식으로 연기할 수 있습니다. 이 기능은 여러 환경에 Next.js 애플리케이션을 배포할 때 특히 유용할 수 있습니다. 예를 들어 모든 페이지를 미리 보기용으로 온 디맨드 생성하여 빌드 속도를 높일 수 있습니다(프로덕션 빌드 제외). 이는 수백/수천 개의 정적 페이지가 있는 사이트에 유용합니다.

```jsx filename="pages/posts/[id].js"
export async function getStaticPaths() {
// When this is true (in preview environments) don't
// prerender any static pages
// (faster builds, but slower initial page load)
// 이 경우(미리보기 환경에서) 정적 페이지를
// 프리 렌더링하지 마십시오.
// (빌드는 빨라지지만 초기 페이지 로드는 느려짐)
if (process.env.SKIP_BUILD_STATIC_GENERATION) {
return {
paths: [],
fallback: 'blocking',
}
}

// Call an external API endpoint to get posts
// 외부 API 엔드포인트를 호출하여 포스트 가져오기
const res = await fetch('https://.../posts')
const posts = await res.json()

// Get the paths we want to prerender based on posts
// In production environments, prerender all pages
// (slower builds, but faster initial page load)
// posts를 기반으로 프리 렌더링할 경로 가져오기
// 프로덕션 환경에서는 모든 페이지를 프리 렌더링합니다.
// (빌드 속도는 느려지지만 초기 페이지 로드 속도는 빨라짐)
const paths = posts.map((post) => ({
params: { id: post.id },
}))

// { fallback: false } means other routes should 404
// { fallback: false } 는 다른 경로가 404임을 의미합니다.
return { paths, fallback: false }
}
```
Loading