どこにでもいるSEの備忘録

たぶん動くと思うからリリースしようぜ

Vue.jsを使ってみた(Vue RouterでSPAっぽくする)

この前までこんな感じになっていました。

nogawanogawa.hatenablog.com

前回まで同じページ内での操作をできるようにしていました。 今回は、SPA(Single Page Application)っぽく、webサーバーを介さずページ遷移をしていきたいと思います。

参考にしたのはもちろんこちら。

Vue.js入門 基礎から実践アプリケーション開発まで

Vue.js入門 基礎から実践アプリケーション開発まで

Vue Router

シングルページアプリケーション(英: single-page application、SPA)とは、単一のWebページのみから構成することで、デスクトップアプリケーションのようなユーザ体験を提供するWebアプリケーションまたはWebサイトである。

(出典:Wikipedia)

だそうです。 要するに、ページ遷移をサーバー側ではなくクライアント側で行うアプリケーションのことをSPAと呼びます。

Vue.jsではSPA構築のためのルーティングライブラリとしてVue Routerが公式に用意されています。

ルーティング設計

ルーティングとは、あるURLのときにそれに該当するページコンテンツ部分などのDOMを書き換え、「見た目上」のページ遷移を起こすことを言います。 SPAのルーティングでは、画面遷移と合わせてURLを変更することがポイントで、これによりサーバーと通信しているかのように見えるわけです。

今回は、検索画面とそれに応じたタスクボードの表示をやってみます。 URLとしては

  • /Search
  • /Taskboard

となります。

お遊びならこんなもんかと。 もっと言うなら、ここで他のサーバーとかと連動して、コンテンツを動的に変化できればもうSPAですね。

作ってみた

主だったところはだいたいこんな感じになりました。

その他、できたもんはこちら。(検索っぽくしてますが、特に何も検索してません。。。)

nogawanogawa.github.io

github.com

その他、メモ

なぜか出たエラー

These relative modules were not found:

* ./router in ./src/main.js

下の記事を見る限り、パスが想定していないところを向いている模様。

qiita.com

わたしの場合の原因は超くだらなくて、なぜかディレクトリ名の後ろに全角スペースが入っていましてた。 なんでだろ。。。気をつけよ。。。

感想

SPAっぽいのができてよかったよかった。これで、クライアントサイドについてさらっと一通り触った気がします。 あとは、サーバーサイドと非同期通信で連携できれば、SPAって呼んでいいかと思いますので、そこまでがんばります。