0Pricing
Vue Academy · レッスン

script setup入門

がsetup()にコンパイルされる仕組み、自動インポート、テンプレートで利用できるトップレベルバインディングについて学習します。

「script setup入門」はCoddyKit上の無料Vue Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはVue Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Vue Academyコースには全4レッスンが含まれています。

より簡潔なComposition API

<script setup>は、Composition APIのコンパイル時構文糖衣です。定型コードを減らすため、単一ファイルコンポーネントをリアクティブな変数を使う通常のJavaScriptのように記述できます。

setup() から script setup へ

従来の形式では、export default、setup()関数、明示的なreturnが必要です。<script setup>を使った形式と比較してみましょう。

<!-- classic -->
<script>
import { ref } from 'vue'
export default {
  setup() {
    const count = ref(0)
    return { count }
  }
}
</script>

script setup 版

<script setup>では、ラッパーオブジェクトもreturn文も必要ありません。トップレベルの変数は自動的にテンプレートへ公開されます。

<!-- script setup -->
<script setup>
import { ref } from 'vue'
const count = ref(0)
</script>

明示的な Return は不要

コンパイラーは、変数、関数、インポートなど、トップレベルにあるすべてのバインディングをテンプレートで利用可能なものとして扱います。記述量が減り、何かをreturnし忘れる心配もありません。

トップレベルの関数も利用可能

トップレベルで関数を定義し、テンプレートから直接バインドできます。returnする必要はありません。

<script setup>
import { ref } from 'vue'
const count = ref(0)
function increment() { count.value++ }
</script>

<template>
  <button @click="increment">{{ count }}</button>
</template>

インポートしたコンポーネントは自動登録

従来のAPIでは、componentsオプションにコンポーネントを列挙する必要がありました。<script setup>では、コンポーネントをインポートするだけでテンプレートから使用できます。

<script setup>
import BaseButton from './BaseButton.vue'
</script>

<template>
  <BaseButton />
</template>

内部では setup() にコンパイルされる

内部では、コンパイラーが<script setup>を通常のsetup()関数に変換します。記述方法がより簡潔になるだけで、動作もパフォーマンスも同じです。

lang ts で TypeScript を追加

タグにlang="ts"を追加すると、TypeScriptを有効にできます。これにより、変数に型を付けたり、コンパイラーマクロでジェネリックを使ったり、完全な型推論を利用したりできます。

<script setup lang="ts">
import { ref } from 'vue'
const count = ref<number>(0)
</script>

コンパイラーマクロ

<script setup>内では、defineProps、defineEmits、defineExposeなどの特別なコンパイラーマクロを使用できます。これらはインポートする必要がなく、コンパイラーが認識します。今後のレッスンでそれぞれを詳しく学びます。

通常の script ブロックとの併用

カスタムコンポーネント名のように、モジュールスコープで一度だけ実行するオプションが必要になることがあります。その場合は、<script setup>と並べて通常の<script>ブロックを追加できます。

<script>
export default { name: 'MyComponent' }
</script>

<script setup>
import { ref } from 'vue'
const count = ref(0)
</script>

チームが script setup を好む理由

  • 定型コードが少ない — ラッパーオブジェクトもreturnも不要です。
  • コンポーネントが自動登録されます。
  • コンパイル時の解析により、実行時のパフォーマンスが向上します。
  • TypeScriptを優れた形でサポートします。

Vue 3の単一ファイルコンポーネントで推奨される書き方です。

クイックチェック

script setupについての理解を確認してください。

まとめ

<script setup>の基本を学びました。

  • setup()に対するコンパイル時の構文糖衣です。
  • 明示的なreturnは不要で、トップレベルのバインディングが自動的に公開されます。
  • インポートしたコンポーネントは自動的に登録されます。
  • TypeScriptを使う場合はlang="ts"を追加します。
  • definePropsなどのコンパイラーマクロは、インポートなしで使用できます。

よくある質問

「script setup入門」レッスンは無料ですか?

はい。「script setup入門」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Vue Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Vue Academyコースには全4レッスンが含まれています。

「script setup入門」で何を学びますか?

がsetup()にコンパイルされる仕組み、自動インポート、テンプレートで利用できるトップレベルバインディングについて学習します。 ブラウザで直接実行するハンズオンコードでVue Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Vue Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのVue Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「script setup入門」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このVue Academyレッスンでコードを書いて実行できますか?

はい。すべてのVue Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

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

  1. script setup入門
  2. definePropsとdefineEmits
  3. defineExposeとuseAttrs
  4. script setupでComposableをインポートして使う
← Vue Academyに戻る