このページ内容は2021年1月21日以降、再調査・再検証してません。実際に扱う際は最新の情報にアクセスしてください。
Nuxt3はVue3.xが使えるVueのフレームワークです。Vue3.xではdata, computed, mounted, methodなどをsetup関数内で書けるようになったComposition APIcomposition_apiや複数のルートノード (template) が使えるFragmentsnuxt3_fragments, モーダルの作成に便利なTeleportnuxt3_teleportなどが使えるようになりました。その他の新機能についてはこちらnuxt3_featuresで確認できます。
以下ではNuxt3になってできるようになった機能について説明します。
Nuxt3からはデフォルトでTypeScriptが使えるようになりましたnuxt3_ts。StoreやPlugin周りのだけでなく、Vueファイル内でも<script lang="ts">
を指定することでTypeScriptを使うことができます。設定ファイルで以下を追記することで、型をより安全にできます。
1export default defineNuxtConfig({2typescript: {3strict: true4}5})
Nuxt3からはNextjsのようなAPIを作れるようになりました。ルートディレクトリにserver/api/xxx.tsファイルを作成し、関数をexportすることで利用できます。すべてのリクエストで実行したい処理があるときは、server/middleware/xxx.tsファイルを作成することで処理できます。
~/server/api/count.ts1let counter = 02export default () => {3counter++4return JSON.stringify(counter)5}
1$ curl localhost:3000/api/count21
Nuxt3は設定ファイルにデプロイ形式を指定でき、AWS LambdaやCloudflare Worker上に簡単にデプロイできるようになりました。以前まではExpress上にNuxtを起動できないと無理だった部分が、Nuxtだけでできるようになりましたnuxt3_preset。
nuxt.config.ts1// AWS Lambda, Netlify Function用にビルドしたいとき2export default defineNuxtConfig({3nitro: {4preset: 'lambda'5}6})
1// Cloudflare Workerで動くようにビルドしたいとき2export default defineNuxtConfig({3nitro: {4preset: 'worker'5}6}
Nuxt3では従来のプラグインやモジュールを引き継いで動かすことができるそうです。Nuxt2でVue3.xのComposition APIを有効にしたり、Nuxt3の新しいサーバーエンジンであるNitroを試したりできるそうですnuxt3_bridge。
1// nuxt/bridgeをインストールして、nuxt.config.js で設定して使う23import { defineNuxtConfig } from '@nuxt/bridge'45export default defineNuxtConfig({6// Your existing configuration7})
GitHubのリポジトリのDiscussionにて、パスごとにビルド方式を変える機能が議論されていますnuxt3_path_build。ホスティングサービスにデプロイしたとして、どうやって動かすかは分かりませんが、個人的に面白い機能だと感じました。
1export default defineNuxtConfig({2routes: {3'/': { prerender: true }, // Once per build (via builder)4'/blog/*': { static: true }, // Once on-demand per build (via lambda)5'/stats/*': { swr: '10 min' }, // Once on-demand each 10 minutes (via lambda)6'/admin/*': { ssr: false }, // Client-Side rendered7'/react/*': { redirect: '/vue' }, // Redirect Rules8}9})