Next.js의/pages에서 페이지 이외의 구성 요소를 설정하는 방법
결론
next.config.js
pageExtensions
옵션을 설정하면 됩니다.💪next.config.js
module.exports = {
// ページコンポーネントの拡張子を変更する
// 以下の設定の場合、ページコンポーネントは pages/index.page.tsx などのようになる
pageExtensions: ['page.tsx', 'page.ts']
}
상기 설정 후 페이지 구성 요소의 확장자를 변경하는 것을 잊지 마십시오.그렇지 않으면404 Not Found
.API Routes도 대상!_app.tsx
또는 _document.tsx
를 지정할 경우 확장자를 변경해야 합니다.이 두 파일은 수정하지 않아도 틀리지 않을 것이니 주의하세요!구체적인 해설
기본 설정에서
/pages
의 모든 구성 요소는 페이지를 표시하는 구성 요소로 간주됩니다.예를 들면 아래의 느낌./pages
.
├── _app.tsx
├── header.tsx <- index.tsx内でしか使ってないコンポーネントのファイル
└── index.tsx <- ページコンポーネント
pages/index.tsximport { Header } from "./header";
const HomePage = () => (
<>
{/* ... */}
{/* ここで普通のコンポーネントとして使っている */}
<Header />
{/* ... */}
</>
)
export default HomePage;
pages/header.tsx/**
* @description HomePageでしか使わないヘッダー
* @note ページコンポーネントではない!
**/
export const Header = () => (
<header>
{/* ... */}
</header>
)
위의 소스 코드를 실행하면 header.tsx
가 페이지 구성 요소로 간주되고 http://localhost:3000/header
에 액세스하면 404Not Fond가 발생하지 않으며 오류가 발생합니다.이 회피 전략으로
header.tsx
에서 이동/pages
했지만, 문제header.tsx
는 index.tsx
에서만 사용되기 때문에 다른 곳으로 이동하면 원본 코드가 분산되어 나중에 읽을 때 폴더를 해야 한다는 것이다.소스 코드가 적으면 괜찮지만 큰 프로젝트는 파일 찾기가 어렵고 편집 기능을 사용해도 파일을 잃어버리는 경우가 많아
/pages
부터 이동하기 때문에 별로 하고 싶지 않다.따라서 설정
next.config.js
pageExtensions
옵션은 페이지 구성 요소의 확장명을 변경하여 /pages
안에 페이지 구성 요소 이외의 구성 요소를 배치할 수 있습니다.다음과 같이 설정합니다
next.config.js
.next.config.js
module.exports = {
// ページコンポーネントの拡張子を変更する
pageExtensions: ['page.tsx', 'page.ts']
}
위에서 설명한 대로 파일 이름을 다음과 같이 수정합니다./pages
.
├── _app.page.tsx <- _app.tsxから変更
├── header.tsx <- ページコンポーネントでは無いので、変更なし!
└── index.page.tsx <- index.tsxから変更
이러한 변경 사항을 수행한 후 액세스http://localhost:3000/header
에도 404Not Fond가 표시됩니다.그러므로
.page.tsx
.tsx
기쁘고 축하할 만하다👏
고급 사용 방법
저는 여기서 폴더 구조에 대한 지식을 좀 공유하고 싶어요.🧭
먼저 Type Script에서 폴더 이름
index.tsx
또는 index.ts
을 가져올 수 있습니다..
├── example
| └── index.ts
└── hoge.tsx
example/index.tsexport const message = "Example内のindex.tsファイルです"
hoge.tsx// フォルダー名のみ指定しているが、example/index.tsの値をインポートできている
import { message } from "./example";
console.log( message ); // 出力結果 : Example内のindex.tsファイルです
위의 동작을 사용하여 다음을 수행합니다.js의 /pages
에서도 구성 요소를 폴더로 관리할 수 있습니다./pages
.
├── hoge
| └── index.page.tsx
├── _app.page.tsx
└── index.page.tsx
위 폴더 구조에서 hoge/index.page.tsx
는 http://localhost:3000/hoge
의 페이지로 처리됩니다.지금까지의 작업에 응용하여 최종적으로 상기 가져오기 행위와 이번
pageExtensions
옵션을 조합하면 더욱 이해하기 쉬운 구성 요소 구조를 만들 수 있다.다음은 샘플의 폴더 구조입니다👇/pages
.
├── hoge
| ├── components <- hoge内のみで使われているコンポーネントをまとめるフォルダー
| | ├── footer.tsx
| | └── header.tsx
| └── index.page.tsx
|
├── _app.page.tsx
|
└── index.page.tsx
이상의 폴더 구조를 통해 /pages/hoge
안에 많은 구성 요소를 만들더라도 의존 관계를 한눈에 쉽게 이해할 수 있고 관리하기 쉬우며 .module.css
파일과 다른 파일도 폴더에 넣을 수 있기 때문에 구성 요소의 확장성도 높아졌다.StoryBook와 테스트 파일 등을 넣기 쉬워서 자주 씁니다.👺
참고 자료
이 보도는 아래의 issues를 참고하였다👨💻
후기
여기까지 읽어주셔서 감사합니다.🙏
기사가 잘못됐다면 리뷰 등을 통해 말해줬으면 좋았을 텐데.
이게 다른 사람의 참고가 되었으면 좋겠어요.
그럼 이따 봐요.👋
Reference
이 문제에 관하여(Next.js의/pages에서 페이지 이외의 구성 요소를 설정하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/uttk/articles/d6be1c224494cb텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)