Vue CLIのtitleタグやmetaタグの設定方法

Vue CLIでのfaviconの変更方法は過去に記事にしましたが、titleタグについて触れていませんでした。
Vue CLIはデフォルトだとプロジェクト名が全ページ共通でついてしまいます。
今回はtitleタグやmetaタグの設定方法についてまとめておきます。
Vue Routerを使用して各記事に設定する
Vue Routerを使っている場合はroutesに新たにタイトルとディスクリプションの情報を追加します。
const routes = [
{
path: '/',
name: 'Home',
component: Home,
meta: { title: 'ページタイトル', desc: 'ディスクリプションを記述' }
}
]あとはこの情報を引っ張ってきて、App.vueでページが変更するたびにセットするように処理を追加します。
export default {
methods : {
setMeta(route){
// タイトルを設定
if(route.meta.title){
let setTitle = route.meta.title;
document.title = setTitle;
}
// ディスクリプションを設定
if(route.meta.desc){
let setDesc = route.meta.desc;
document.querySelector("meta[name='description']").setAttribute('content', setDesc)
}
}
},
mounted(){
let route = this.$route;
this.setMeta(route);
},
watch: {
'$route' (route, from) {
this.setMeta(route);
}
}
}やっていることはsetMetaという先ほど追加したタイトルとディスクリプションを取ってきてセットするメソッドを作り、mountedで初回、watchの'$route' (routeInstance, from)でVue Routerを使って遷移した時に発火させているだけです。
あとはpublic/index.htmlを開いて、下記のmetaタグを追加します。
<meta name="description"><title>タグはデフォルトであるのですが、<meta name="description">のタグはないため、用意しておく必要があるからです。


Visual Studio Codeの文字サイズやタブサイズの設定方法
Nuxt.jsでページを作成・追加する方法|Nuxt.jsの基本
SafariのURLメニュー部分も考慮できるCSSの単位「dvh」
SourceTreeを開くと「’git status’ failed with code 69:’」というポップアップが出てくる場合の解決方法
WordPressでショートコードを作成する方法
JavaScriptで配列内から特定条件の要素を探す方法
Nuxt.jsでのページ遷移設定方法(Vue Routerやnuxt-link)|Nuxt.jsの基本
疑似クラスの:hoverと:activeのスマホでの挙動の違い
AirPodsで片耳を外しても再生が止まらないようにする方法
MacのKeynoteにハイライトされた状態でコードを貼り付ける方法
iTerm2でマウスやトラックパッドの操作を設定できる環境設定の「Pointer」タブ
DeepLで「インターネット接続に問題があります」と表示されて翻訳できないときに確認すること
Ulyssesの「第2のエディタ」表示を使って2つのシートを横並びに表示する
SafariでFacebookのPage Pluginに「リクエストを処理できませんでした」とダイアログが表示される問題
Finderで選択したフォルダをターミナルで開く方法まとめ
Bluetoothデバイスのメニューアイコンを追加したり、バッテリー情報を表示させる「ToothFairy」
Macで快適なFTPクライアントを探しているなら「Transmit 5」がオススメ
Google Chrome単体で「あとで読む」を実現する「リーディングリスト」機能
1Passwordのアカウントを持っていない人にもログイン情報を共有する方法
JavaScriptパッケージマネージャーをnpmからYarnへ移行しました
HTMLが書ければすぐ習得できるテンプレートエンジン「EJS」の基本的な書き方
Adobe初のUI/UXデザインツール「AdobeXD」の使い方を見てきました!【CSS Nite in Kobe】
サイト運営には不可欠!!自分のブログ用のFacebookPage作ろう。