Nuxt.js2.13のアップデートを確認する
少々時間が経ってしまいましたが、6/19, 2020にリリースされたNuxt.js 2.13は目玉機能であるFull Static Generation(完全静的モード)を始めとした魅力的な機能が搭載されたので備忘録がてら記事にしておきたいと思います。
主な追加機能
個人的には何と言ってもFull Static Generationですが、その他にも主な機能としては下記のような機能が追加されています。
Nuxt v2.13 is out ✨
— Nuxt.js (@nuxt_js) June 18, 2020
▵ Full Static Generation
▵ Runtime Config
▵ Components Discovery
▵ Nuxt Telemetry
▵ .env support
▵ And more 👀
Read more on https://t.co/ukNMnI0UMN
Thread 👇 pic.twitter.com/7UhPPf4ynU
詳細は以下に記載があります。
https://github.com/nuxt/nuxt.js/releases/tag/v2.13.0
今回はその中から個人的に気になった下記についてメモをしておきたいと思います。
- Full Static Generation(完全静的モード)
- 動的ルーティングの自動生成
- コンポーネントの自動インポート
Full Static Generation(完全静的モード)
Nuxt.jsは0.3.2とかなり前から静的に生成する機能は搭載されていましたが、Webページが遷移する際にAPIリクエストが発生する仕様でした。その為、APIサーバーが死んでいるとページ遷移の際にエラーが出てしまい、完全な静的サイトとは言えない状況でした。
今回のアップデートでこの事象が改善され完全に静的なページが生成されるようになりました。素晴らしい!
Full Static Generationの実装方法
nuxt generate
を既に使用している場合、今回のアップデートで新たに導入されたtarget
オプションをnext.config.js
に記述します。
export default {
mode: 'universal',
target: 'static',
}
static
モードはNuxt側に静的ファイルを出力するよう指示します。
あとはこれまで使用していたnuxt generate
の代わりにnuxt build && nuxt export
を実行して完了です。
nuxt build && nuxt export
生成されたページのローカルでの確認方法が追加された
生成したページの生成は新たに追加されたnuxt serve
コマンドを実行することで簡単に確認できるようになりました。
nuxt serve
動的ルーティングの自動生成
Full Static Generationの次に個人的に感動したのが動的ルーティングの自動生成です。
動的ルーティングを行う場合、v2.12以前は下記のようにnuxt.config.js
で明示的に設定が必要でした。
export default {
generate: {
routes () {
const { data } = await axios.get(`${apiUrl}/posts?_embed`)
return data.map(post => {
return {
route: post.id,
payload: post
}
})
}
}
}
それがv2.13以降は上記のような設定は一切不要で動的ルーティングを自動で生成してくれます。最高ですね。
コンポーネントの自動インポート
コンポーネントを使用する際、v2.12以前は以下のようにimport
でコンポーネントファイルをインポートし、components
にインポートしたコンポーネントを登録するという作業が必要でした。
<template>
<div>
<Button />
</div>
</template>
<script>
import Button from '~/components/Button'
export default {
components: {
Button
}
}
</script>
v2.13以降ではnuxt.config.js
にcomponents
プロパティが追加され、値をtrue
にすることで自動的にコンポーネントが読み込まれるようになりました。
components: true
これにより下記のようにコンポーネントのインポートおよび登録の記述は一切必要なくなりました。
<template>
<div>
<Button />
</div>
</template>
<script>
export default {
}
なお、v2.13時点ではis
プロパティを用いてコンポーネントを動的に切り替えられるDynamic Components(動的コンポーネント)には自動インポートは対応していないようです。
参考
自動インポートについて
Improve Your Developer Experience With Nuxt Components - NuxtJS
動的コンポーネントについて
動的コンポーネント - コンポーネントの基本 — Vue.js
以上、v2.13では魅力的なアップデートが満載でした。