SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

JavaScriptフレームワーク「Vue 3」と「Nuxt 3」の活用

「Nuxt 3」の新機能を体験してみよう――環境作成からVue 3の新機能活用・Nuxt Bridgeの利用方法まで

JavaScriptフレームワーク「Vue 3」と「Nuxt 3」の活用 第1回

Vue 3のComposition APIを試す

 前述の通り、Nuxt 3ではVue 3の機能が利用できます。そこで、Vue 3の目玉機能の一つといえる「Composition API」を利用して、図7の簡単なWebページを実装してみます。このWebページでは、入力した苗字と名前をつないで画面表示します。また「あいさつ」ボタンを押すとあいさつ文をダイアログで表示します。

Nuxt 3とComposition APIで実装したWebページ(p002-nuxt3-composition)

図7 Nuxt 3とComposition APIで実装したWebページ(p002-nuxt3-composition)

 図7の通り表示させるため、app.vueファイルをリスト3の通り実装します。

[リスト3]図7に対応するapp.vueの実装(p002-nuxt3-composition/app.vue)
<template>
  <div>
    <div>
      <input v-model="family"><input v-model="given">
    </div>
    <div>名前: {{ fullName }} </div>
    <button @click="onClickGreet">あいさつ</button>
  </div>
</template>
<script lang="ts">
export default defineComponent({ // コンポーネント処理内容の記述 ...(1)
  setup() { // Composition APIでページ内容を設定 ...(2)
    // 変数 ...(3)
    const family = ref('吉川')
    const given = ref('英一')
    // 算出プロパティ ...(4)
    const fullName = computed(function() {
      return `${family.value} ${given.value}`
    })
    // メソッド ...(5)
    const onClickGreet = () => {
      alert(`こんにちは、${fullName.value}さん`)
    }
    // 変数・算出プロパティ・メソッドを返却 ...(6)
    return {
      family,
      given,
      fullName,
      onClickGreet
    }
  }
})
</script>

 Webページの内容を<template>部、その処理内容を<script>部に記述します。<script>部のdefineComponent(1)は、TypeScriptの型推論を機能させるため、Vue 3で導入されたメソッドです。このメソッド内に、Composition APIで定義されたsetupメソッド(2)を記述して、ページ(コンポーネント)を実装していきます。

 Webページで参照する変数(3)は、変数値を引数にしたrefメソッドで定義することで、Webページで変更した内容が変数に反映される、いわゆる双方向データバインディングが実現できます。変数をもとに、動的に処理した内容をプロパティとして参照できる算出プロパティ(4)はcomputedメソッドの引数に処理内容を記述し、通常のメソッド(5)は変数として定義します。最後にそれらをsetupメソッドの戻り値として返却します(6)。返却された変数・算出プロパティ・メソッドは<template>部で参照・利用できます。

 ここではComposition APIのさわりだけを説明しましたが、詳細はVue 3の過去記事も参考にしてください。

[補足]Nuxt 3の自動インポート機能

 リスト3では、defineComponent、setup、ref、computedをインポートするimport文の記述がありません。これはNuxt 3がこれらのメソッドを自動的にインポートしてくれるためです。自動インポートされるのは、Composition APIのメソッドやNuxtが提供するメソッドで、すべてのメソッドは、プロジェクト実行時に生成される.nuxt/auto-import.d.tsで確認できます。

自動インポートされるメソッドがリストされるauto-import.d.tsファイル(p002-nuxt3-composition/.nuxt/auto-import.d.ts)

図8 自動インポートされるメソッドがリストされるauto-import.d.tsファイル(p002-nuxt3-composition/.nuxt/auto-import.d.ts)

 また、プロジェクトにcomponents、composablesフォルダーが存在する場合、その配下に配置したコンポーネントなどのファイルも自動インポートされます。

次のページ
Nuxt Bridgeを利用してNuxt 2のプロジェクトにNuxt 3の機能を導入

この記事は参考になりましたか?

JavaScriptフレームワーク「Vue 3」と「Nuxt 3」の活用連載記事一覧
この記事の著者

WINGSプロジェクト  吉川 英一(ヨシカワ エイイチ)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。 2026年時点での登録メンバは約50名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/15492 2022/02/09 11:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー