【JavaScript】Vue.jsに触れてみた

[2024/07/10]

JavaScriptについて勉強をしていました。

いろんなウェブアプリも作成してきましたが、これらは基本Vanilla(バニラ) JavaScriptで書いてきました。

Vanilla JavaScriptとは?

バニラとは素の状態で、マイクラなんかでもModを使っていない状態をバニラと呼びます。

Vanilla JavaScriptとは、素のJavaScriptのことをいいます。

自分は基本的にバニラでプログラムを組んできました(とはいえ、DataTablesのようなライブラリを使うことはあります)。

フレームワークとは?

じゃあバニラに対して何があるんだ?というと、Vue.jsやReact、AngularというJavaScriptのフレームワークというものがあります。

ぶっちゃけ同じことはバニラでもやろうと思えばできます。でも、フレームワークを使うともっと簡単にできるという訳です。

「だったら最初からフレームワークを使ってくればよかったんじゃね?」となる訳ですが、今まで何度か使おうと挑戦したものの挫折をしてました。

環境構築(Node.jsは使いたくない)

それぞれのフレームワークを使ってみようと調べてみると、「まずNode.js(サーバ上でJavaScriptを動かすヤツ)をインストールします。」というところから始まります。

いつも使っているPCにNode.jsをインストールするのは簡単です。でも自分のウェブサーバはレンタルサーバでNode.jsを動かすことができません。一番最初にここで躓きました(結構前の話)。

先ほど挙げたフレームワークの中でVue.jsはCDN(別のサーバからファイルを参照する仕組み)でも利用できるってことで、とりあえず動かすことができました。

Vue2とVue3

Vue.jsを動かすことはできたんですが、タイミングがあまりよくなかった。

タイミングというのは、Vue.jsの最新バージョンはVue3です。Vue2から大きく変わったということで、Vue3の情報を見つけることができなかった。
正確にはVue2と3の情報の見分けがつかなかった。

Vue3からはcomposition APIというものが追加され、コードの書き方が大きく変わりました

今までのOptions APIも使えるのですが、今から勉強するならcomposition APIとなった訳ですが、いちいちコードに「composition APIですよー」なんて書いてない訳です。

知識があれば見分けるのは簡単ですが、無知な自分には本当に必要な情報を探すのが大変。

ぶっちゃけ何が便利なの?

「フレームワークを使うともっと簡単にできる」と書いたものの、この時点では何が便利なのかさっぱりわかっていませんでした。ということもあり、あまり学習に乗り気ではなかった。

でも、実際に動かしてみると「便利だな!」と思うことがありました。

例えば「入力された値を取得して、結果を表示する」という基本的はプログラムがあるとします。

バニラでは、「入力欄に値が変更されたときに動作する」という仕組み(イベントリスナー)を事前に仕込んでおく必要があり、その次に値の取得をしたり、計算する関数の呼び出ししたりしないといけない。計算以外にもやることがたくさんあります。その分コードも長くなる。

これがVue.jsだとフォームから値を設定(v-model)が簡単にでき、値が変更される(リアクティブ)と自動的に再計算される仕組みがあります。

値を取得するコードや計算をする関数を呼び出したりする必要がないのは便利。

Vue.jsサンプル

いつものIIDXのDJ LEVELを計算するツールをVue.jsを使って作ってみた。

「Note」と「ExScore」の取得のコードは書く必要はありません。「const note = ref(1000);」と宣言していれば、「v-model.number="note"」とした入力欄の値を自動で反映されます。

computedプロパティというものにすると、計算に必要な値(今回であれば「Note」や「ExScore」)が変更されると自動で再計算され、結果も自動で反映されます。

formatPercentで表示形式を定義していて、「{{ formatPercent(rate) }}」とスコアレートをパーセント表示にしています。今回は1つしかパーセント表示にするものはありませんが、複数あるときは便利。

watchで値の監視をしていて「理論値以上のExScoreが入力されたときに理論値にする」ようにしています。

最初のうちは慣れないですが、それでも処理を省略できるのは便利ですね。

さいごに
キャラクターアイコン

リアクティブとかそういう知識もない自分にとっては、仕組みを知ったときに一生「へー。へー。」って感心してた。

プログラミング

関連記事

SNS

ブログの更新時に投稿しています。感想や連絡などもこちらへ。

SNS

ブログの更新時に投稿しています。
感想や連絡などもこちらへ。

Powered by Blogger with Bootstrap. / ©SGTMusicGameCh written by Shigetsu Mizyu a.k.a 310.