本文へスキップ
totonoe.tech

フレームワークを整える

中級

Vue を整える。

= 単一ファイルコンポーネント(.vue)をブラウザ内でコンパイルして動かす

Vue が初めての方は、先に そもそも Vue とは・どんな場面で使うか をどうぞ。

サンプルコード(クリックでエディタに挿入)

App.vue Vue 3.5 SFC
PREVIEW

「実行」を押すとここにプレビューが表示されます。

コンソール

※ 無限ループを書くとタブが固まることがあります。その場合は「■ 停止」でプレビューを作り直せます。

そもそも Vue とは

画面とデータをつなぐ、とっつきやすさに定評のある JavaScript フレームワーク。

Vue は、画面(UI)をデータと結びつけて作る JavaScript のフレームワークです。データを書き換えると画面が自動で更新されるリアクティブな仕組みを持ち、HTML に近い書き方で画面を組み立てられます。Evan You 氏が作り、現在はコミュニティを中心に開発が続けられているオープンソースです。

「少しずつ導入できる(プログレッシブ)」ことを特徴にしており、既存のページの一部だけに使うことも、画面全体を Vue で作ることもできます。同じ種類の道具に React や Svelte があり、Vue はテンプレート(HTML に近い書き方)で書くのが大きな違いです。

どこで・どんな場面で使うか

  • 社内システムの管理画面

    入力フォームや一覧表が中心の業務画面で、データと表示を結びつける Vue の仕組みが活きます。

  • 既存サイトの一部を動かす

    今ある HTML に少しだけ Vue を足し、検索や絞り込みなどを動的にする使い方ができます。

  • Nuxt などの土台として

    Vue を土台にしたフレームワークでサイト全体を作る構成もあります。

  • 小規模チームや個人開発

    決まりごとが分かりやすく、少人数でも作り始めやすいと感じる人が多い道具です。

  • 求人・学習の場面

    国内でも使っている会社があり、日本語の解説も充実しているので、学びやすい部類に入ります。

向いている場面・向いていない場面

  • 向いている:HTML や CSS の経験があり、その延長で動く画面を作りたい人。
  • 向いている:既存のページに少しずつ導入したい場合や、小〜中規模の業務アプリ。
  • 向いていない:動きのほとんどない文章中心のサイト。画面を動かす仕組み自体が不要です。

上の練習場でデータを書き換えて「実行」を押し、画面が自動で更新される様子を試してみてください。

Vue が向いている場面/向かない場面

自分に合うのはどれ? 選び方を見る →

テンプレート構文がHTMLに近く、1人・少人数での立ち上げが速い。

◎ 向いている場面

  • ・ 1人・少人数で早く形にしたいとき(テンプレート構文がHTMLに近く学びやすい)
  • ・ 既存のHTMLに<template>タグ感覚で機能を足していきたいとき
  • ・ 日本語ドキュメント・日本語コミュニティの情報を重視するとき
  • ・ SEOを狙うWebサイトをNuxtで組みたいとき

△ 向かない場面

  • ・ Reactほどの求人量・ライブラリの選択肢を必要とするとき
  • ・ HTMLの構文を一切増やさず素のJSだけで済ませたいとき

Vue は「値が変わったら、使っている場所だけ」描き直す。

ref() や computed() で作った値は、画面の中で使われている場所と結びつきます。値を書き換えるだけで、DOM操作を一切書かずに表示が更新されます。

  • ①

    ref() — 値をリアクティブにする

    ref(0) で作った値は .value で読み書きします。テンプレートの中では .value なしで直接使え、値が変わると自動で再描画されます。

  • ②

    v-model — 入力欄と変数を双方向に結ぶ

    入力欄に文字を打つと変数が更新され、変数を書き換えると入力欄の表示も変わります。裏側では :value と @input の組み合わせを Vue が自動生成しています。

  • ③

    v-for — 配列を並べて描画する

    配列に要素を追加・削除すると、一覧の表示も自動で追従します。ループでは :key を付けて、各要素を正しく識別できるようにします。

  • ④

    computed() — 依存する値から自動で再計算

    computed(() => price.value * qty.value) は、price か qty のどちらかが変わるたびに自動で再計算されます。手動で再計算を呼び出すコードは不要です。

このページについて

ライブラリは cdn.jsdelivr.net から読み込みます。書いたコードと実行結果は端末内で完結し、外部へ送信しません(送信ゼロ)。 プレビューはサンドボックス化した iframe(sandbox="allow-scripts")で動いており、このページや端末のデータには触れません。

🌐 このページを開いただけでは外部通信は発生しませんが、「実行」を押した最初の1回だけ、 SFC コンパイラ(@vue/compiler-sfc 3.5.42)と Vue 本体(vue 3.5.42)を配信元の cdn.jsdelivr.net から取得します。 これはプログラムを受け取るだけの通信で、あなたが書いたコードや実行結果が送られることはありません。 ただし通信である以上、配信元にはお使いの回線の IP アドレスが見えます。 「入力は端末から出さない」という当サイトの原則に関わる点なので、隠さずに書いておきます。

このツールについて

Vue の単一ファイルコンポーネント(.vue)を、ブラウザの中だけでコンパイルして動かします。ref で値を変えると画面が追従し、v-for で並べた一覧が増え、computed が自動で再計算される様子を、実際に手を動かして確認できます。

ブラウザ内で Vue 3 の SFC(.vue) をコンパイルして実行する Playground。ref・v-model・v-for・computed の4本で、値を変えると画面が追従する様子を体験できます。

主な機能

  • 4サンプル(ref・v-model/@click・v-for・computed)
  • @vue/compiler-sfc で事前コンパイルしてから実行(CSP の new Function 禁止に対応)
  • 左エディタ・右プレビュー+console・停止ボタン
  • Vue 本体とコンパイラは cdn.jsdelivr.net から初回のみ・送信ゼロ

よくある質問

Q. 入力した Vue のコードはサーバーに送られますか?

A. 送られません。@vue/compiler-sfc でのコンパイルも Vue の実行もブラウザ内で完結します。外へ出る通信はコンパイラと Vue 本体のダウンロード(初回のみ)だけです。

Q. なぜ普通の Vue(vue.global.js)ではなくコンパイラを使うのですか?

A. 本番のセキュリティ設定(CSP)が new Function を禁止しているためです。テンプレート文字列を実行時にコンパイルする方式は動かせないので、@vue/compiler-sfc で事前に JavaScript へ変換してから実行しています。

Q. 無限ループを書いたらどうなりますか?

A. プレビューのタブが固まることがあります。「■ 停止」でプレビューの iframe を作り直せます。

入力値はURLの「#」以降に入るためサーバーには送信されません。リンクを開くと同じ状態を復元します。

続けて整える

データの時点:各ページに記載の版(各プロジェクトの公式リリース)

データの更新予定の一覧

totonoe.tech を運営する株式会社Koinobori は、法人向けの研修サービス「NOBORIBA®」も運営しています。 ここで手を動かした内容を、講師から教わる形の研修です。このページの道具は無料のまま、登録もいりません。

運営サイト

私たちが運営するサイト