[Next.js]コード剥離とルーティング関連
23677 ワード
開始します.
pages/index.tsxの内容から、react-heartなどのheaderをheadで管理することができます.(ページごとにドキュメントのタイトルを決定したり、検索エンジンを最適化したりするのに役立ちます)
ルーティングを処理するためにreactに別のreact-router-domをインストールした場合、next.jsは、追加のインストールを必要とせずにpagesというディレクトリに基づいてルーティングすることができる.
今pagesディレクトリの下で検索します.tsxを生成すると、urlにページを移動できるかどうかを次の方法で確認できます.
まずファイル名を検索します.tsx大文字を使用するとurlを打つと自動的に大文字から小文字に変わり、404エラーが発生します.
https://nextjs.org/learn/basics/navigate-between-pages/pages-in-nextjs
ここからも分かるように、ファイル名は小文字で始まる、守るべき約束です.
Nettはreact-router-domが提供する機能で、reactから外部ページに移動しない限り、アプリケーション内でページを移動できます.jsは、リンクというコンポーネントを使用してページ間を移動します.
これらは、プライマリ検索にも検索にも使用できます.したがって、個別に作成できます.
また、ページ内のファイルは、構築中に分割されたコード剥離を自動的にサポートします.
Each file inside your pages/directory will be code split into its own JavaScript bundle during the build process.
https://nextjs.org/docs/migrating/from-react-router#code-splitting
ホームページには検索ページに関連するコードがロードされておらず、ホームページに必要な内容だけがロードされていることが確認されました.(ページを追加した後、正常に動作するにはサーバを再起動する必要があります.)
urlは状況に応じて動的ルーティング処理をpagesディレクトリで処理することもできる.
まず、ページを移動するために作成されたnavigationコンポーネントに追加のコードを記述します.
/post/second
/post/abc?foo=bar
では、ポストだけ出す場合はどうなるのでしょうか.
もちろん、404エラーが発生します.解決するには、/pages/postにインデックスを作成します.tsxに記入すればいいです.
非ダイナミックルーティングはダイナミックルーティングよりも優先されるためです.
https://nextjs.org/docs/routing/introduction
https://stackoverflow.com/questions/66372842/next-js-dynamic-route-right-after-index
$ npx create-next-app next-tutorial --typescript
Head
pages/index.tsxの内容から、react-heartなどのheaderをheadで管理することができます.(ページごとにドキュメントのタイトルを決定したり、検索エンジンを最適化したりするのに役立ちます)
// pages/index.tsx
import type { NextPage } from 'next';
import Head from 'next/head';
const Home: NextPage = () => {
return (
<div>
<Head>
<title>타이틀 지정</title>
<meta name="description" content="Generated by create next app" />
<link rel="icon" href="/favicon.ico" />
</Head>
<main>
<p>hello world</p>
</main>
</div>
)
}
export default Home
ルーティング処理
ルーティングを処理するためにreactに別のreact-router-domをインストールした場合、next.jsは、追加のインストールを必要とせずにpagesというディレクトリに基づいてルーティングすることができる.
今pagesディレクトリの下で検索します.tsxを生成すると、urlにページを移動できるかどうかを次の方法で確認できます.
// pages/search.tsx
import Head from "next/head";
const Search = () => {
return (
<div>
<Head>
<title>검색 페이지</title>
<meta name="description" content="Generated by create next app" />
<link rel="icon" href="/favicon.ico" />
</Head>
<p>Search</p>
</div>
);
}
export default Search;
まずファイル名を検索します.tsx大文字を使用するとurlを打つと自動的に大文字から小文字に変わり、404エラーが発生します.
https://nextjs.org/learn/basics/navigate-between-pages/pages-in-nextjs
ここからも分かるように、ファイル名は小文字で始まる、守るべき約束です.
クライアントからサイトへのナビゲート
Nettはreact-router-domが提供する機能で、reactから外部ページに移動しない限り、アプリケーション内でページを移動できます.jsは、リンクというコンポーネントを使用してページ間を移動します.
これらは、プライマリ検索にも検索にも使用できます.したがって、個別に作成できます.
// components/Navigation.tsx
import Link from "next/link";
const Navigation = () => {
return (
<header>
<ul>
<li>
<Link href='/'>
<a>Main</a>
</Link>
</li>
<li>
<Link href='/search'>
<a>Search</a>
</Link>
</li>
</ul>
</header>
);
}
export default Navigation;
Navigationコンポーネントをホームページと検索ページにロードすることで、ページ間を再ロードせずに移動できます.// pages/search.tsx
const Search = () => {
return (
<div>
<Head>
// 생략...
</Head>
<Navigation />
// 생략...
</div>
);
}
コード剥離
また、ページ内のファイルは、構築中に分割されたコード剥離を自動的にサポートします.
Each file inside your pages/directory will be code split into its own JavaScript bundle during the build process.
https://nextjs.org/docs/migrating/from-react-router#code-splitting
ホームページには検索ページに関連するコードがロードされておらず、ホームページに必要な内容だけがロードされていることが確認されました.(ページを追加した後、正常に動作するにはサーバを再起動する必要があります.)
どうてきルーティング
urlは状況に応じて動的ルーティング処理をpagesディレクトリで処理することもできる.
まず、ページを移動するために作成されたnavigationコンポーネントに追加のコードを記述します.
// components/Navigation.tsx
const Navigation = () => {
return (
<header>
<ul>
// 생략...
<li>
<Link href="/post/first">
<a>First Post</a>
</Link>
</li>
<li>
<Link href="/post/second">
<a>Second Post</a>
</Link>
</li>
</ul>
</header>
);
}
次にpagesディレクトリの下にpostというディレクトリを作成し、そのディレクトリの下に[id].tsx
ファイルを作成します.import { useRouter } from "next/router";
const Post = () => {
const router = useRouter();
const { id } = router.query;
return (
<div>
<p>Post: {id}</p>
</div>
);
}
export default Post;
これにより、/post/1、/post/abc、および/post/firstなどのパスがpages/post/[id]になります.tsxと一致するとquery objectが結果を生成します./post/second
{ "id": "second" }
クエリー文字列を使用するケースもquery objectに含まれます./post/abc?foo=bar
{ "foo": "bar", "id": "abc" }
以下は、ナビゲーションのSecond Postをクリックしたときの結果です.では、ポストだけ出す場合はどうなるのでしょうか.
もちろん、404エラーが発生します.解決するには、/pages/postにインデックスを作成します.tsxに記入すればいいです.
非ダイナミックルーティングはダイナミックルーティングよりも優先されるためです.
// pages/post/index.tsx
const Index = () => {
return (
<div>
<p>Default 페이지</p>
</div>
);
}
export default Index;
Reference
https://nextjs.org/docs/routing/introduction
https://stackoverflow.com/questions/66372842/next-js-dynamic-route-right-after-index
Reference
この問題について([Next.js]コード剥離とルーティング関連), 我々は、より多くの情報をここで見つけました https://velog.io/@jiseong/Next.js-테스트1テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol