0Pricing
Frontend Academy · レッスン

ファイルベースルーティングと自動インポート

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フィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. ファイルベースルーティングと自動インポート
  2. useFetchとuseAsyncData
  3. Nuxtモジュール:Image・Auth・i18n
  4. デプロイ:静的生成とSSR
← Frontend Academyに戻る