🗓️

Nuxt 3 で days.js で formatDate

2023/11/14に公開

Nuxt 2 などでは @nuxtjs/dayjs などを使うのがセオリーでしたが、 Nuxt 3 ではこの辺は使わず plugins を作成して daysjs を直接利用するのがセオリーとなりました。

また、Nuxt 3 では plugins は自動的に読み込まれるので、 nuxt.config.js で plugins: ["~/plugins/days.js"] など指定している場合は削除します。

環境

plugins を作成する

Nuxt 3 からは自動的に plugins ディレクトリ配下が読み込まれます。

~/plugins/daysjs.js
import dayjs from "dayjs"
import { defineNuxtPlugin } from "#app"

export default defineNuxtPlugin((nuxtApp) => {
  nuxtApp.provide("formatDate", (value) => {
    const date = dayjs(value)
    return date.format("YYYY.M.D(ddd.)")
  })
})

nuxtApp.provide を使うと $ 経由で <template> 内で使用できます。

使用法

Vue ファイル側で import は特に必要がありません。

blog.vue
{{ $formatDate(date) }}

date には date: 2023-11-14T04:44:00+0900 のような String が渡ってくるものとするとき、以下のように出力されます。

2023.11.14(Tue.)

感想

Discussion