Vueでルーティングを実装する3つの方法

✍🏼 作成日 2016年06月12日   
❗️ 注意:この記事が作成されてから既に 日が経過しています。情報の鮮度にご注意ください

はじめに

Vueの学習まとめが一段落したので、これからは他の断片的な知識を補足していきます。今回はVue Routerの3つの実装方法について説明します。

プロジェクトの完全なコードを確認する (このプロジェクトにはVue Pluginなどの他のVueテストコードも含まれています)

render関数を使った方法

基本的な考え方は、render関数がアドレスバーのパスに基づいてコンポーネント内容をレンダリングし、HTML5のhistory.pushStateの使用とpopstateイベントの監視を組み合わせることで、直接アドレスへのアクセス/ブラウザの戻る・進む/リンククリックによる遷移といったルーティング機能を実現します。

メリット:

  1. 存在しないアドレスを404.vueページにリダイレクトできる。

デメリット:

  1. HTML5のhistory.pushState APIをサポートしていないブラウザではPolyfillできない。
  2. render関数のレンダリング結果をキャッシュできない。

注意: トランジション効果を使用する場合、ルート要素はdefault.vueに存在します。コード上の違いに注意してください。

詳細コードを確認

componentのis属性を使った方法

原理は上記と同じですが、render関数の代わりにcomponentを使用します。

componentコンポーネントにはis属性があり、どのテンプレートをロードするかを指定できます。この属性は、アドレスバーのアドレスに基づいて動的に設定するロジックを自分で実装できます。

メリット:

  1. componentにkeep-alive属性を追加してキャッシュできるため、上記のrender関数よりも効率的です。

デメリット:

  1. HTML5のhistory.pushState APIをサポートしていないブラウザではPolyfillできない。
  2. 存在しないルートアドレス(404など)をレンダリングできない(そのため、このDemoには上記のような404.vueがありません)

注意: トランジション効果を使用する場合、ルート要素はtpl.htmlに存在します。コード上の違いに注意してください。

詳細コードを確認

VueRouterプラグインを使った方法

VueRouterは公式プラグインで、あらゆるニーズを完璧に実現しています。

メリット:

  1. 必要な機能がすべて揃っている。

デメリット:

  1. pushStateをPolyfillするために、パスの最後に#を追加してルーティング機能を実現しているため、真のルーティングではなく、単にhash値を変更しているに過ぎない。

詳細コードを確認

- EOF -
この記事の初出: Vueでルーティングを実装する3つの方法 - Xheldon Blog