logo
コーディング

更新日

WebデザイナーのためのVue.js事始め

Vue.jsはサクッと小さく始められるJavaScriptのフレームワークです。「びゅー」と読みます ;) これまでWebデザイナーがjQueryで作成したような動きもVue.jsでも加えられるのですが、jQueryとは違ってHTMLに条件文を加えたり、アニメーションをCSSで設定することで、JavaScript自体のコードをあまり書かなくても実装できちゃいます。jQueryからの乗り換えを考えている方はぜひ検討してみてくださいね!

Vue.js の使い方

Vue.js は公式のドキュメントが日本語に対応しており、こちらを読むだけで基本的な使い方は理解できるはず。じっくり読んで、ご自身でもコードを書いて動作を確認し、身につけていくといいでしょう。

最初の一歩目の例として「JavaScript で定義したテキストを HTML に表示させる」というスーパーシンプルなコードを書いてみます。まずは Vue.js を HTML ファイル内に読み込みます:

<script src="https://cdn.jsdelivr.net/npm/vue"></script>

続いて JavaScript を書いていきます。el には Vue.js を使ってあれこれしたい部分の ID 記述ましょう。ここでは「app」という ID をつけました。 さらに HTML に表示させたいテキストを格納する箱の名前を「message」とし、実際に表示させる内容を「Hello Vue.js!」とします。

new Vue({
  el: "#app",
  data: {
    message: "Hello Vue.js!",
  },
});

HTML では先程 JavaScript で定義した ID「app」を属性で付与し、テキストを表示させたい部分に {{ message }} で記述します。{{}} で変数を囲むのがポイント!

<div id="app">{{ message }}</div>

するとこんな感じでテキストが表示されます。簡単ですね!

デモの右上「Edit on CODEPEN」ボタンをクリックして別タブで表示した後、JavaScript コードをいじってあれこれ試してみてください!

ただ、これだけじゃ「HTML に直接テキストを書けばいいやんけ!」と、Vue.js の恩恵をまったく感じませんね…!ということで Web サイトを魅力的に動かすための、いくつかのコードを紹介します。

クリックしたら何かが起こる系

v-on:click を加えることで、クリックした時に何かしらイベントを発生できます。以下の例ではボタンをクリックすると japanese という関数が働いて日本語メッセージを表示しています。

v-on:click の代わりに v-on:mouseover を使うと、カーソルを合わせた時に何かが起こる系の動作を加えられますよ!公式サイトの「イベントハンドリング 」で詳しく解説されています。

入力したら何かが起こる系

フォームに入力したものを利用する場合は v-model が使えます。表示させるだけならとってもシンプルなコードで実装できますね。

公式サイトの「フォーム入力バインディング 」で詳しく解説されています。

プラグインも多数あります

jQuery と同様、Vue.js にも多くのプラグインが用意されています。プラグインファイルを読み込んだ後は Vue.use() で呼び出します。以下のサイトでプラグインやコンポーネントがまとめられているので、お気に入りを探してみてくださいね:

Vue.js を使ったサンプルコード

簡単なコードで実装できるものを紹介していきます!コードはデモ画面の「HTML」「CSS」「JS」タブをクリックして表示できます。

1. ボックスを消す

指定したボタンをクリックすると、そのボタンのある Div 全体が消えます。お知らせ表示などに使えそう。

2. スライドパネル

「1. ボックスを消す」を応用させた、表示・非表示の切り替えができるパネルです。transition タグを使って動きをつけているのがポイント。これを使うと自動的にアニメーション用のクラスが付与されるので、CSS を使ってアニメーションを加えられます。公式サイトの「Enter/Leave とトランジション一覧」で説明されています。

3. 文字数カウント

length で文字数を数えます。さらに trim を使うことで、冒頭と末尾のスペース(空白)をカウントしない仕様にできます。


とにかくいろんなことができる Vue.js。ひとつの記事にまとめきれないので、またいずれ書いていこうと思います。個人的には jQuery で使っていたような簡単なフロントエンド周りの動きを Vue.js で使い、大規模なアプリ開発になると React や Angular 等が採用されるのかなと思っています。公式でも「他のフレームワークとの比較」で解説されているので、一読してみるといいですね。