Vue.jsに触れよう1
本記事ではVue.jsについて学習していきたいと思います。
1. Vue.jsとは
Vueは、ユーザーインターフェースを構築するためのJavaScriptフレームワークです。
標準的なHTML、CSS、JavaScriptを土台とするプログラミングモデルです。
JavaScriptは、WebサイトやWebアプリにアニメーションなどの動きを付けられるプログラミング言語です。
JavaScriptで開発する場合、フレームワークと呼ばれる開発基盤を使うことで、開発工数を抑えて品質を高められるというメリットがあります。
フレームワークは、アプリの土台となる構造やアーキテクチャ、基本的な機能の実装を含んだ開発支援ツールのことです。
フレームワークが提供する土台の上に、個々のプロジェクトで必要な機能を構築していくことで、Webアプリの開発の効率化を図ることができます。
Vue.jsの特徴として、
・読み込みや実行がはやい
・JavaScriptライブラリと併用できる
・多種多様な開発分野に活用できる
・開発にかかる工数を減らすことができる
・成果物の品質を高めやすくなる
・初心者にも扱いやすい
・小規模な開発を行う人に最適
といった特徴があります。
同じJavaScriptのフレームワークでReactがあるのですが、それは大規模開発向けの人におすすめです。最近はVue.jsが色々な場面で活躍しています。
2. Vue.jsの基礎知識
リンク:Vue SFC Playground
上記のような画面が表示されると思います。
scriptタグの中身がJavaScript、templateタグの中身がHTMLの要素です。
また、CSSの要素が書かれるstyleタグもあります。
デフォルト(画像)でのコードの説明をします。
<script setup>は、読み書きのしやすさのために導入される書き方です。
使わない書き方もあります。
次に、「import { ref } from ‘vue’」についてです。
refはvue3のAPIのセットの一部のことで、「リアクティブな変数を扱うために使うもの」です。
vue2では以下のように、dataで定義していましたが、vue3からはdataは使わなくなります。
<script>
export default {
data() {
return {
msg: ‘Hello World!’
}
}
}
</script>
リアクティブな変数は、値が更新されたときに変更が検知される状態のことです。
値の変更を検知することで、即座に画面に反映させたりすることができます。
じゃあ「ref」はどうやって使うのかという話ですが、
<script>
import { ref } from ‘vue’
const msg = ref(‘Hello World!’)
console.log(msg.value);
</script>
<template>
<h1>{{ msg }}</h1>
<input v-model=”msg” />
</template>
上記画像のscript内にコンソールログの文を追加しました。
scriptの中では、refで値をラッピングして正確なリアクティブの機能を実現しています。
そのため、「value」というプロパティを使用してrefの中身を取り出して使います。
templateの中では、refでラッピングしていても、自動でアンラップしてくれるので、直感的にわかりやすくデータを扱うことができます。(templateの中ではvalueが不要です)
そして、上記コードではmsgにある「Hello World!」のタイトルと、「Hello World!」とかかれたフォーム入力欄が表示されます。
3. まとめ
本記事では、Vue.jsについて、使うメリット、基礎知識をダラダラ記述しました。
・Vue.jsはJavaScriptのフレームワークのこと
・ユーザーインターフェースを構築するのに便利なこと
・Vue.jsは簡単に実行できるサイトがある
・script setup
・リアクティブな変数
・refはどう使われているか
・v-modelについて
・v-modelでチェックボックス量産した件
今回はサーバー構築やimport、cdnなどの説明は省きたかったため、Vue SFC Playgroundを使用しました。
このような学習するツールがあることはありがたいです。
しかし、実際の開発ではVisual Studio Codeなどのエディターの用意、アプリケーションの実行環境を用意、バージョン管理、ブラウザのローカル環境で実行して確認など、コーディング以外の作業の習得にも時間がかかることが多い印象です。
これからの学習次第で、エディターを使用してブラウザ上で実行できるようになれたらいいなと思います。