nuxt-jsonld v2 をリリースしました。nuxt-jsonld は Nuxt.js で JSON-LD をコンポーネントから管理できるようにするモジュールです。
新しいバージョン v2 で Nuxt3 に対応しました。
Composition API
Vue3 や Nuxt3 の最大の特徴の一つでもある Composition API を nuxt-jsonld にも採用しました。
以下のように書くことができます。
sample.vue<template>
<p>Sample</p>
</template>
<script lang="ts" setup>
useJsonld({
'@context': 'https://schema.org',
'@type': 'Thing',
name: 'Sample',
});
</script>
静的な JSON-LD であればこのようにオブジェクトを渡すだけで <head> 内に表示することができます。
リアクティビティが必要な場合でも、オブジェクトを返す関数を渡すことで実現できます。
useJsonld(() => ({
'@context': 'https://schema.org',
'@type': 'Thing',
name: someRef.value,
}));
これで、someRef が変更されるたびに、JSON-LD も連動して更新されます。
これは Nuxt3 に組み込まれている useHead と同じような API となります。
Options API
引き続き Options API での jsonld メソッドもサポートしています。
export default {
data() {
return {
name: 'Sample',
}
},
jsonld() {
return {
'@context': 'https://schema.org',
'@type': 'Thing',
name: this.name,
}
}
}
Auto Imports
Nuxt3 の新たな機能として、Auto Imports というものがあります。
これは ref や computed といった Vue API や useAsyncData といった Nuxt の関数、そして composables/ components/ 内にあるコードを自動でインポートしてくれる機能です。
この機能を nuxt-jsonld でも採用しているため、自分でインポートせずとも useJsonld が使えるようになっています。
もちろん、以下のように明示的にインポートすることもできます。
import { useJsonld } from '#jsonld'
// or
import { useJsonld } from '#imports'
Schema Type Support
nuxt-jsonld は schema-dts というスキーマ定義ライブラリを用いて型定義をしてあるため、以下のようなサポートを受けながら JSON-LD を記述することができます。


終わりに
nuxt-jsonld v2 は Nuxt3 でのみ動作します。
今のところ useJsonld を nuxt-bridge 向けにバックポートする予定はありません。
Nuxt3 への移行を進めましょう。