Vue.jsとは?
目次
Vue.jsは、UI(ユーザーインターフェース)を構築するためのJavaScriptフレームワークです。
Webアプリケーション構築のためのフルスタックフレームワークであるAngularと比較すると、view層のみに焦点を当てたシンプルなフレームワークのため、他のライブラリと組み合わせて使ったり、既存のプロジェクトと統合したりと自由度が高い点が特徴です。
自由度が高いので、まずはVue.jsを使ってみて、開発の状況に合わせてその後他のフレームワークに切り替えるということも比較的簡単にできるので、迷ったらまずはVue.jsという選択もアリです。
本格的なWebアプリケーションの構築から、簡単な一部の機能実装まで幅広く適用可能なフレームワークと言えます。
シンプルな設計に加えて、Vue.js独自の規格やルールも少ないため、導入時の学習コストも比較的少なくて済みます。
また、人気が高いフレームワークなので日本語のブログや記事が充実している点もおすすめポイントの一つです。
Vue.jsの特徴
Vue.jsには以下のような特徴があります。
- MVVM
- Virtual DOM(仮想DOM)
- コンポーネント
1つずつ、詳しく解説していきます。
MVVM
Vue.jsではMVCの派生種である、GUIライブラリに適したMVVM(Model(M)-View(V)-ViewModel(VM))モデルを採用し、構築されています。
「Model(データ)」「View(画面)」「ViewModel(メイン処理)」に分けて開発を行います。
MVVMモデルでは、View(画面)と表示するデータおよびデータを操作するView Model間でデータ連携を行います。
HTMLの要素にディレクティブ(Directive)と呼ばれるVie.jsの独自属性を付与し、ディレクティブを通じてView Modelと連携させることで、View ModelのデータをViewに反映させます。
Virtual DOM(仮想DOM)
Vue.jsでは、Reactでも導入されている、「仮想DOM」という考え方を導入しています。
仮想DOMは更新が必要な箇所を自動的に計算して実際のDOMを更新する役割を果たします。
差分だけを更新するので、全更新と比較して、無駄な再描画をしなくていい分高速に実行可能です。
エンジニアは常に仮想DOMに対して全更新をかけるだけでいいので簡単でミスが少なくなります。
あとは仮想DOMが自動で差分計算、DOMに差分を適用します。
Vue.jsでは、Directive(ディレクティブ)という、Viewの要素に付加できる独自属性を利用することで、DOMの操作をします。
コンポーネント
Vue.jsではコンポーネントという単位でUIのパーツを作っていきます。
同じような機能はコンポーネントを再利用し簡易に実装できる、機能単位で実装を分離しやすくなるといったメリットがあります。
それによって書くプログラムの量が減るため、開発の生産性を上げることができます。
Vue.jsの使いどころ
Vue.jsは、特にSPA(シングルページアプリケーション)の開発に向いています。
なぜならば、SPAはUIの使いやすさをあげるためにJavaScriptを多様する必要あるからです。
JavaScriptで効率的に、シンプルにUIを作るためのであるフレームワークであるVue.jsはまさにうってつけです。
AngularやReactとの違い
Vue.jsとよく比較されるAngularやReactですが、どのように使い分けたらいいのでしょうか?
AngularJSはフルスタックのフレームワーク、ReactとVue.jsはユーザーインターフェース(UI)構築のViewのみに特化したフレームワークです。(Reactは厳密に言うとライブラリです)
どのフレームワークもSPAのWEBアプリケーション開発に使えるという点は共通です。
Angularはフルスタックのフレームワークで、Angular独自の仕様も多いため、導入・学習コストが高い一方で、開発に必要なすべての機能が一式揃っているため、フレームワークを導入するだけで効率的に開発が行えるというメリットがあります。
一方で、ReactやVue.jsは、Viewに特化した機能がメインのため、適宜他のライブラリなどと連携させて自由度高く開発を進めることが可能です。
仕様が固まっていなかったり、継続的に開発が続いていくような場合は、まずこちらを導入する方が、後々の仕様の変更などに対応しやすいかもしれません。
また、Vue.jsにはビルドをしなくても使えるという特徴があるので、ReactやAngularと違い、ちょっとしたクライアントワークにも気軽に導入することが可能です。
企業の情報やエンジニアとしてのキャリアアップの方法、現在の待遇(給料・報酬)、未経験からのステップアップ方法などのご相談を受け付けています。
お気軽にお問合せください。