5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Svelte/SapperでOGP設定をする

Last updated at Posted at 2019-12-15

はじめに

SSRを選択する理由にOGP設定ができることが挙げられます。
最近、注目されているSvelte/SapperではどのようにOGP設定をするのか調査しました。

2021/02/17:追記
svelte-meta-tagsを使うのが便利です
https://github.com/oekazuma/svelte-meta-tags

OGP設定

OGP設定ではページごとに内容が変わることが求められます。
そうでなければ、異なる商品なのに静的なOGP設定しかできません。

OGP設定のog:urlにはリクエストURLを設定することにします。
sapper ではPRELOADINGを提供していて、簡単に言うと、実際に画面を開く前に、事前に読み込めるものは読み込んで高速化する技術です。このPRELOADING処理内でリクエストURLも取得することができます。

これを使うには、以下のようにscriptタグをcontext="module"で宣言します。
この中の処理はserverでのみ実行され、clientでは実行されません。
(Next.jsのgetInitialPropsやNuxt.jsのasyncDataだと公式サイトで言っています。)

index.svelte
<script context="module">
  export function preload({ host, path, params, query }) {
    // 処理
  }
</script>

この中でogp設定に必要な情報を作成し、必要であればDBなどから取得してください。
ここでは簡単に以下のように設定します。

index.svelte
<script context="module">
  export function preload({ host, path, params, query }) {
    // 必要ならここでDB取得処理を書いてください。

    let ogp = {}
    ogp.url = 'https://' + host + path
    ogp.type = 'article'
    ogp.title = '記事編集タイトル'
    ogp.description = '記事詳細'
    ogp.site_name = 'サイト名'
    ogp.image = 'https://sample/ogp_image.png'

    return { ogp }
  }
</script>

しかし、このままでは同じindex.svelteファイルからは読み取れないので、このscriptタグとは別にcontext="module"のないscriptタグの中でogp変数を外部から読み取れるようにexportで宣言します。※この変数名と<script context="module">内の戻り値の変数は同じにする必要があります。

index.svelte
<script context="module">
  ...
</script>

<script>
  export let ogp
</script>

<svelte:head>
  <title>Sapper project template</title>
  <meta property="og:url" content={ogp.url} />
  <meta property="og:type" content={ogp.type} />
  <meta property="og:title" content={ogp.title} />
  <meta property="og:description" content={ogp.description} />
  <meta property="og:site_name" content={ogp.site_name} />
  <meta property="og:image" content={ogp.image} />
</svelte:head>

参考サイト

Sapper公式 PRELOADING

5
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?