[レベル: 上級]
メジャーな JavaScript フレームワークである、Angular・React・Vue は Google 検索の SEO において基本的にはうまく機能することを、先日お伝えしました。
ただし、検索エンジンフレンドリーにするために一部の変更が必須です。
この記事では、変更のためのサンプルコードを紹介します。
Vue.js の SEO 構成
前回の記事で、「Vue.js では vue-router を無効にする」などとトンチンカンなことを書いてしまいました(勘違いさせてしまい、申し訳ありません。問題箇所は修正済みです)。
正しくは、hash モードから history モードへの変更です(これなら、1行の変更で済みますね)。
デフォルトの hash モードだと URL に # を使うので SEO に不向きです。
historyAPI を適用して一意の URL を割り当てるようにします。
また、 Vue では title タグと meta description タグを扱えるようにするために vue-meta の拡張機能を利用する必要があります。
コード例は次のようになります。
vue-meta を有効にします。
そして history モードに切り替えます。
import Meta from 'vue-meta' //vue-meta のインストール
Vue.use(Meta)
const router = VueRouter({
mode: 'history', //history モードに変更
routes
})
title タグと meta description タグを構成します。
export default {
meta info() {
return {
title: /* title タグを記述 */,
meta: [
{name: 'description', conent: /* meta description タグを記述 */}
]
}
},
//...
}
React の SEO 構成
Vue 同様に React でも title タグと meta description タグを構成できるようにする必要があります。
そのために react-helmet を有効にします。
コードのサンプル例です。
import {Helmet} from 'react-helmet' //react-helmet のインストール
export class SomePage extends Component {
//...
render() {
return (<div>
//...
<Helmet>
<title>{/* title タグを記述 */}</title>
<meta name='description' content={/* meta description タグを記述 */} />
</Helmet>
</div>)
}
}
Angular の SEO 構成
Angular はデフォルトで、title タグおよび meta description タグを構成できます。
Vue や React とは異なり、拡張機能を別途有効にする必要はありません。
import {Title , Meta} from '@angular/platform-browser';
export class SomePageComponent implements OnInit {
constructor(private title: Title, private meta: Meta) { }
ngOnInit() {
this.title.setTitle(/* title タグを記述 */);
this.meta.updateTag({
name: 'description' , content: /* meta description タグを記述 */
});
}
}
この記事で紹介したコードはサンプルです。
実際には、環境に応じて変わってくる部分もあるかと思います。
詳細は、それぞれのフレームワークの技術ドキュメントを参照してください(それでも間違ってないはずです。もし万が一、おかしなところがあれば指摘してください)。
質問は僕ではなくマーティンへどうぞ!