Nuxt.jsで複数のlayoutsファイルを作成して適用する方法

Vue.js

Nuxt.jsで複数のlayoutsファイルを作成して適用する方法を紹介します。

Nuxt.jsで複数のlayoutsファイルを作成して適用する方法

Nuxt.jsで複数のlayoutsを使う方法
ディレクトリ構造は上のようになっているとします。

手順は次の通りです。

  1. layoutsフォルダの中に、あらたらしいVueファイルを作成します。
  2. そして、それをpagesのファイルでNuxt.jsの特別なプロパティであるlayoutプロパティを使って指定します。

具体例をみてみましょう。

まずデフォルトで設定されているlayoutsのdefault.vueは次のような内容になっています。

<template>
  <div>
    <Nuxt />
  </div>
</template>

ここに、styleタグでスタイルを設定しています。
Nuxtの部分に内容が出力されていることがわかります。

何も指定しない限り、ここで指定されているレイアウトが適用されます。

複数レイアウトを作成して、個別のケースでレイアウトを使い分けたい場合は、layoutsフォルダの中に、Vueファイルを作成します。

今回の場合、products.vueファイルを作成しています。

新しいレイアウトを作成する

layouts/products.vue

<template>
  <div>
    <header>商品ページ</header>
    <Nuxt />
  </div>
</template>

ここにsytleを指定することでレイアウトを整えることができます。

そして、このレイアウトを適用させるためには、layoutプロパティを使います。

作成したレイアウトを適用する

pages/products.vueに適用したいとします。
その場合、次のようにscriptタグの中で、layoutプロパティを使います。

<script>
export default {
  data() {
    return {
      productId: ''
    }
  },
  methods: {
    onLoadProduct() {
      this.$router.push(`/products/${this.productId}`)
    }
  },
  layout: 'products'
}</script>

また、ネスト化している場合、このレイアウトを適用したいすべてのVueファイルに同様にlayoutプロパティを使ってレイアウトを指定すればOKです。

Vue.js

Posted by devsakaso