ファイルベースルーティングと自動インポート
pages/ディレクトリにページを作成して自動ルーティングを利用し、動的セグメントを理解して、Nuxtのコンポーネントやcomposablesの自動インポートを活用します。
「ファイルベースルーティングと自動インポート」はCoddyKit上の無料Frontend Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはFrontend Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Frontend Academyコースには全4レッスンが含まれています。
Nuxt 3 — VueのSSRフレームワーク
Nuxt 3は、ReactにおけるNext.jsのようなVue向けフレームワークです。SSR、SSG、ファイルベースルーティング、データ取得、充実した自動インポート機能を備えた、設計方針の明確なフレームワークです。
pages/ディレクトリ
pages/にVueコンポーネントを置くと、それらがルートになります。ルーターの設定は必要ありません。
pages/
index.vue // route: /
about.vue // route: /about
blog/
index.vue // route: /blog
[slug].vue // route: /blog/:slug
users/
[id]/
profile.vue // route: /users/:id/profile[param]による動的ルート
ファイル名に角括弧を使うと、動的セグメントを作成できます。useRoute()でパラメーターにアクセスします。
<!-- pages/blog/[slug].vue -->
<script setup>
const route = useRoute();
const { data: post } = await useFetch(`/api/posts/${route.params.slug}`);
</script>
<template>
<article>
<h1>{{ post.title }}</h1>
<div v-html="post.body" />
</article>
</template>キャッチオールルート
キャッチオールルートには[...slug].vueを使用します。そのフォルダー配下のあらゆるパスに一致します。
// pages/docs/[...slug].vue
// matches /docs/getting-started, /docs/api/auth, etc.
<script setup>
const route = useRoute();
console.log(route.params.slug); // ['api', 'auth']
</script>レイアウト
layouts/内のコンポーネントはページをラップします。ページごとのアクティブなレイアウトはdefinePageMetaで指定します。
<!-- layouts/dashboard.vue -->
<template>
<div class="dashboard">
<Sidebar />
<main><slot /></main>
</div>
</template>
<!-- pages/dashboard/index.vue -->
<script setup>
definePageMeta({ layout: 'dashboard' });
</script>デフォルトレイアウト
layouts/default.vueは、レイアウトを指定していないすべてのページに適用されます。
NuxtLinkによるナビゲーション
クライアントサイドナビゲーションには<NuxtLink>を使用します。Nuxtはホバー時にリンク先のページをプリフェッチします。
<template>
<nav>
<NuxtLink to="/">Home</NuxtLink>
<NuxtLink to="/blog">Blog</NuxtLink>
<NuxtLink :to="`/users/${userId}`">Profile</NuxtLink>
</nav>
</template>プログラムによるナビゲーション
setupまたはイベントハンドラーでnavigateTo()を使用します。
<script setup>
async function onLogin() {
await login(form);
await navigateTo('/dashboard');
}
</script>自動インポート — コンポーネント
components/にコンポーネントを置くと、インポートせずにどのテンプレートからでも使用できます。Nuxtがスキャンして登録するためです。
components/
AppHeader.vue
UserCard.vue
<!-- any page or component: -->
<template>
<AppHeader />
<UserCard :user="user" />
</template>自動インポート — Composables
composables/内のComposableは自動的にインポートされます。
// composables/useCounter.ts
export const useCounter = () => {
const count = ref(0);
const increment = () => count.value++;
return { count, increment };
};
<!-- any component: -->
<script setup>
const { count, increment } = useCounter(); // no import needed!
</script>自動インポート — ユーティリティ
Vueのユーティリティ(ref、reactive、computed、watchなど)とNuxtのユーティリティ(useFetch、useState、navigateTo)は自動的にインポートされます。
自動インポートを無効にする
他のものと競合する場合は、nuxt.config.tsで特定の自動インポートを無効にできます。
export default defineNuxtConfig({
imports: {
autoImport: false // disable all auto-imports
}
});クイックチェック
Nuxt 3で、/docs/配下のあらゆるパスに一致するルートを作成するにはどうしますか?
振り返り:ルーティングと自動インポート
pages/フォルダーでルートを作成します。動的ルートには[param]、キャッチオールには[...slug]を使用します。layouts/のレイアウトはdefinePageMetaで選択します。ナビゲーションにはNuxtLinkとnavigateToを使用します。components/、composables/、VueおよびNuxtのユーティリティは自動インポートされるため、手動でインポートする必要はありません。必要に応じてnuxt.config.tsで無効にできます。
よくある質問
「ファイルベースルーティングと自動インポート」レッスンは無料ですか?
はい。「ファイルベースルーティングと自動インポート」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Frontend Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Frontend Academyコースには全4レッスンが含まれています。
「ファイルベースルーティングと自動インポート」で何を学びますか?
pages/ディレクトリにページを作成して自動ルーティングを利用し、動的セグメントを理解して、Nuxtのコンポーネントやcomposablesの自動インポートを活用します。 ブラウザで直接実行するハンズオンコードでFrontend Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Frontend Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのFrontend Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「ファイルベースルーティングと自動インポート」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このFrontend Academyレッスンでコードを書いて実行できますか?
はい。すべてのFrontend Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- ファイルベースルーティングと自動インポート
- useFetchとuseAsyncData
- Nuxtモジュール:Image・Auth・i18n
- デプロイ:静的生成とSSR