無駄遣いチェックページをコンポーネントで作る
"Vue.js入門 基礎から実践アプリケーション開発まで"の3章を読んだので、前回作った無駄遣いチェックページを分解してコンポーネントにし、ページを作り直した。
前回の記事はこれ。
tasotasoso.hatenablog.com
コンポーネントとテンプレートの作成
下図の様にページを2つのコンポーネントで構成する。
コンポーネントの表示内容はテンプレートを使って書いていく。
そうすると、コードは3つの部分に別れる:
・HTML部分
・componentに読み込むテンプレートの宣言
・コンポーネントの宣言
コードの外観としては以下のようになる。
※"$xxx"は自分で好きに名付けてください。
<--! ###ここはHTML### --> <div id="$app-id"> <$component-id></$component-id> </div> <script type="text/x-templete" id="$template-id"> //テンプレートの中身 </script> <--! ###ここまでHTML### --> // ###ここからjavascript### <script> Vue.component('$component-id', { templete: '#$templete-id' //ほかのプロパティ }) </script> // ###ここまでjavascript###
テンプレートはコンポーネントのプロパティとしても書ける。ただ、HTML内に外出しで書いておくと、コンポーネントの宣言が肥大化を防ぐことができる。
コード
特にコンポーネントの宣言がかなりすっきりと書けた。コンポーネントに読み込むテンプレートを変えることでコンポーネントの修正が容易にできる。また、テンプレートに流し込むdataを変えるだけでコンポーネントの流用がしやすい。
感想
ページをコンポーネントに分解することでVue.jsの箇所がかなり見やすくなった。
一方でコンポーネントの設計を考える必要が出てきた。例えば今回calculate-templateとしてFormと計算結果の表示箇所を一つのコンポーネントとした。
最初は分けようとしたが、Vueの標準の機能だと親子関係にあるコンポーネント同士しかデータのやり取りができない。コードが複雑になってしまう可能性がありそうだった。
この辺りはVuexを使うと解決できるようだったので、引き続きよいコンポーネントの作り方を見ていきたい。
参考
- 作者: 川口和也,喜多啓介,野田陽平,手島拓也,片山真也
- 出版社/メーカー: 技術評論社
- 発売日: 2018/09/22
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る