公開日時:2022.06.22

最終更新日:2022/06/22

Vue.jsを使ってみよう!

アイキャッチ

こんにちは!
最近寝るのが遅く昼ごろに起きがちなGlobal Web Designの福田です(笑)

私はWeb制作の勉強をはじめてから、昨年の4月までずっとjQueryを使っていましたが

「jQueryよりも便利なJavaScriptはないだろうか?」

と思っていました。

そのとき見つけたのがVue.jsというJavaScriptフレームワークでした。
それからはWeb制作はすべてVue.jsでJavaScriptを構築していて、とても扱いやすく便利なフレームワークだなと思っています!

そこで今回はVue.jsについてご紹介していきます!

Vue.jsとは

Vue.jsは、JavaScriptフレームワークの1つになります。
JavaScriptはほぼ全てのブラウザで動くプログラミングで、フロントエンドアプリケーションの開発でも使用されています。

JavaScriptフレームワークで最も有名なのがjQueryですね。
jQueryは導入もしやすくて使っている方も多いのではないでしょうか?
しかし、jQueryはDOM操作を自分で行うという弱点があります。

最近は、WEBページを偏移せずに1つのページで処理を完結させる「Single Page Application」などのフロントエンド開発が主流になり、jQureyの弱点が顕著化しています。

そこで登場したのがVue.jsになります。
Vue.jsはDOM操作を自動化してくれたり、効率良くフロントエンドの開発ができるようになっています。

Vue.jsのメリット

ここからはVue.jsのメリットをご紹介していきます。
Vue.jsのメリットは

  1. 学習コストが低い
  2. 拡張性が高い
  3. 再利用できるコンポーネント
  4. データを同期できる

になります。

学習コストが低い

JavaScriptフレームワークは専用の書き方を覚える必要がありますが、Vue.jsではシンプルに設計されているため、とても覚えやすいです。
書き方もHTMLに似た書きかたで非常に扱いやすいです。

Vue.jsは国内でも多く使われているので、学習しやすい環境が整っていると言えるでしょう。
また公式ドキュメントもあるため気になる方は、まず確認してみるのが良いでしょう。

拡張性が高い

他のJavaScriptフレームワーク(React、Angular)などは、中規模以上を想定したフレームワークですが、Vue.jsはシンプルに設計されているため、さまざまな規模の開発を行うことができます。

また既存のプロジェクトの一部にも適用できるため、途中から導入をすることもできます。

再利用できるコンポーネント

コンポーネントとは、HTMLの一部分を切り取って、その内容を簡単に呼び出せる部品になります。
コンポーネントは、複数のモーダルウインドウやアコーディオンメニューなどを作成するときにとても使いやすくHTMLのコード量を減らすことができます。

コンポーネントについてはまた別記事にてご紹介していきます。

データを同期できる

Vue.jsはHTML要素に特別な属性を付けることによって、JavaScriptのデータとひもづけができます。
データと対象をひもづけし、どちらかに変更があればもう片方へ自動的に反映させる仕組みを「データバインディング」といいます。

Vue.jsは要素がお互いに更新しある「双方向データバインディング」に対応しています。
そのため同期作業が自動化されて、開発の効率がよくなります。

Vue.jsでハンバーガメニューを作ってみる!

ここからはVue.jsでハンバーガーメニューを実装していきます。
CSSとJavascriptでハンバーガーメニューを実装しよう!の記事からコードを引用して書いていきます。

<body>
  <header id="header">
    <div class="header-area">
      <h1>ロゴ</h1>
      <div class="hamburger" @click="hamburger = !hamburger">
        <span></span>
        <span></span>
        <span></span>
      </div>
    </div>
    <ul class="slide-menu" :class="{active: hamburger}">
      <li>メニュー</li>
      <li>メニュー2</li>
      <li>メニュー3</li>
      <li>メニュー4</li>
    </ul>
  </header>
  <script src="https://unpkg.com/vue@next"></script>
  <script src="js/script.js"></script>
</body>
body{
  overflow-x: hidden;
}
.header-area{
  display: flex;
  justify-content: space-between;
  height: 65px;
  padding: 0 20px;
  align-items: center;
}
.hamburger{
  width: 40px;
  height: 25px;
  position: relative;
}
.hamburger span{
  position: absolute;
  width: 100%;
  height: 1px;
  background-color: blue;
  transition: .5s;/* 追記 */
}
.hamburger span:first-of-type{/* ハンバーガーメニューの1番目の線 */
  top: 0;
}
.hamburger span:nth-of-type(2){/* ハンバーガーメニューの2番目の線 */
  top: 50%;
}
.hamburger span:last-of-type{/* ハンバーガーメニューの3番目の線 */
  top: 100%;
}
.slide-menu{
  background-color: rgba(0, 0, 0, .8);
  position: fixed;
  top: 65px;
  width: 100%;
  left: 0;
  transform: translateX(100%);
  transition: .5s;/* 追記 */
}
.slide-menu li{
  color: #fff;
  line-height: 400%;
  text-align: center;
}
.hamburger.active span:first-of-type{/* ハンバーガーメニューの1番目の線 */
  top: 50%;
  transform: rotate(45deg);
}
.hamburger.active span:nth-of-type(2){/* ハンバーガーメニューの2番目の線 */
  opacity: 0;/* 透明にする */
}
.hamburger.active span:last-of-type{/* ハンバーガーメニューの3番目の線 */
  top: 50%;
  transform: rotate(-45deg);
}
.slide-menu.active{
  transform: translateX(0);
}
const header = Vue.createApp({
  data() {
    return {
      hamburger: false,
    }
  },
})
header.mount('#header')

HTMLの「<script src=”https://unpkg.com/vue@next”></script>」でVue.jsを読み込んでいます。
JavaScriptの

const header = Vue.createApp({

})
header.mount('#header')

でVue.jsのコアを宣言しています。
「data(){}」とはデータプロパティで、数値、文字列などの値やオブジェクトなどのデータを格納する場所になります。
今回は真偽値の「hamburger: false,」を格納しています。

このハンバーガメニューは

  1. 「@click=”hamburger = !hamburger”」をクリックすると、データプロパティの「hamburger: false,」 のとき「hamburger: true,」に、「hamburger: true,」のときに「hamburger: false,」に切り替わる
  2. 「:class=”{active: hamburger}”」で「hamburger: true,」のときに「active」というクラスを追加、「hamburger: false,」のときに「active」というクラスを削除

の流れになります。

Vue.jsは直接HTMLにイベントの発火などを書くことができるので、JavaScriptのコードをスッキリさせることができます。

@click

Vue.jsの「@click」はv-onディレクティブで、正式に書くと「v-on:click=”hamburger = !hamburger”」となりますが、「v-on:」は「@」で省略できるため「@click=”hamburger = !hamburger”」となります。

「@」の後ろの「click」はイベントハンドラといい、その要素をクリックしたときにという意味です。
「click」の後ろの「”hamburger = !hamburger”」は、データプロパティの「hamburger」が「true」のときは「false」に、「false」のときは「true」にという意味になります。
「!hamburger」の「!」は否定で「hamburger 」を「false」にするという意味を持っています。

:class

「:class」とはVue.jsでv-bindといいます。
v-bindは作成した変数の値などをHTML属性に渡すために使います。

「:class」も正式に書くと「v-bind:class」と書きますが、「:」で省略して書くことができます。
その後の「”{active: hamburger}”」でクラス名を動的に制御しています。

データプロパティの「hamburger: true」であればクラス「active」をつける。
「hamburger: false」であればクラス「active」を外すという意味になります。

See the Pen Vue ハンバーガーメニュー by Fukuda Yuzuru (@fukuda-yuzuru) on CodePen.

まとめ

いかがでしたしょうか?
今回はVue.jsについてご紹介しました。

jQueryを使っている方は初めは難しく感じると思いますが、HTMLのインラインでJavaScriptを制御できるため、視認性がとてもよくなります。
またこれからVue.jsについて記事を書いていこうと思っていますので、Web制作などに活かせた頂けたら嬉しいです!

この記事を書いた人
福田 弦

福田 弦

2020年にGlobal Web Desingを立ち上げ。得意分野は、コーディング、CMS構築、ディレクション。現在はブログ、マーケティングなどを勉強中。趣味はドラム。

SNSでシェア