nuxt.js(v2) meta情報を1つのjsonに集約、各ページに反映されるようにする

この記事では、

nuxt.js(v2)でSEOに必要なmeta(OGP)で入力漏れの事故をなくす

で紹介されていた、metaまわりの実装をスッキリさせる方法を元にmeta情報を一箇所で管理する方法をまとめます。

予め、この記事のもと設定が終わっている条件とします。

実現すること

  • meta情報の一覧性を高めるため、メタ情報を一箇所で管理できるようにする
  • 各ページでmeta情報を定義するのをやめて、すべてのページのメタ情報が含まれるjson形式の定義ファイルを1つ作成しそこにまとめて書いたものが反映されるようにする

手順

  • メタ情報をまとめた定義ファイルをjsonで作成
  • nuxt.config でそれを読み込みを定義し、どこからでも参照できるように
  • jsonで定義されたmeta情報は、ファイルパスに基づいて各ページに反映されるように

準備

1. meta情報定義ファイル metadata.jsonを作成

ファイルパスに基づいてmetaデータを切り分けられるような構造にした。
独自のフォーマット。
例は、about、activity、works、projectsページがある場合の定義例。

ファイルは、

@/assets/data/metadata.json

このように、asset内に配置しました。

2. プロジェクト内で使用できるように、nuxt.config.js に読み込み設定

これまでの設定が完了したことで、

context.env.metaData

で metadata.json で定義したデータにアクセスできるようになった。

metaに反映

記事 の本題と紹介されている部分 assets/mixins/meta.js の箇所に手を加えていきます。

mixin内で、metaData 値でアクセスできるようにする

metaData 値でアクセスできるように、assets/mixins/meta.js の asyncDataの箇所を追加します。

head 関数内の調整

次に、head 関数内を調整していきます。
書くページのファイルのパスは、

const path = `${this.$router.history.base}${this.$route.path}`;

で取れるようなので
やや雑な感じですがこのような感じにします。

最新情報をチェックしよう!