今回は、Vue.jsを利用してFizzBuzzのプログラムを書いてみようと思います。
Vue.jsも少し、案件で利用したことがあるのですが、
他の言語に比べると経験が浅いので、練習したいと思います。
〇過去のFizzBuzz
FizzBuzz問題について
FizzBuzz問題の一般的な仕様は、以下の通りです。
3で割り切れる場合は「Fizz」(Bizz Buzzの場合は「Bizz」)、5で割り切れる場合は「Buzz」、両者で割り切れる場合(すなわち15で割り切れる場合)は「Fizz Buzz」(Bizz Buzzの場合は「Bizz Buzz」)を数の代わりに発言しなければならない。
今回は、一般的な仕様に加えて、
Fizz、Buzz、FizzBuzzの表示を、スタイルを変えて表示してみようと思います。
また、全てのパターン表示時に数字を表示しようと思います。
以下が、コードになります。
<html> <head> <script src="vue.js"></script> </head> <body> <div id="loop"> <div v-for="count in 100"> <div v-if="count % 15 === 0" v-bind:style="fizzBuzzStyle">FizzBuzz {{ count }}</div> <div v-else-if="count % 5 === 0" v-bind:style="fizzStyle">Fizz {{ count }}</div> <div v-else-if="count % 3 === 0" v-bind:style="BuzzStyle">Buzz {{ count }}</div> <div v-else>{{ count }}</div> </div> </div> </body> <script> let loop = new Vue({ el: '#loop', data: { fizzBuzzStyle: { color: 'red', fontSize: '13px', "font-weight": "bold", }, fizzStyle: { color: 'blue', fontSize: '13px' }, BuzzStyle: { color: 'green', fontSize: '13px' } } }) </script> </html>
〇実行結果
コードを細かく確認してみると、
まず、Vue.jsを利用するためにheadタグ内で、コアファイルを読み込んでいます。
<head> <script src="vue.js"></script> </head>
そして、bodyタグ内で、
描画するdivに、ループテンプレート(v-for)、条件付きレンダリング(v-if)、スタイルバインディング(v-bind:style=””)を指定します。
<div id="loop"> <div v-for="count in 100"> <div v-if="count % 15 === 0" v-bind:style="fizzBuzzStyle">FizzBuzz {{ count }}</div> <div v-else-if="count % 5 === 0" v-bind:style="fizzStyle">Fizz {{ count }}</div> <div v-else-if="count % 3 === 0" v-bind:style="BuzzStyle">Buzz {{ count }}</div> <div v-else>{{ count }}</div> </div> </div>
cssスタイルは、Vueオブジェクトに含めておけば、自動的にスタイルがバインディングされます。
let loop = new Vue({ el: '#loop', data: { fizzBuzzStyle: { color: 'red', fontSize: '13px', "font-weight": "bold", }, fizzStyle: { color: 'blue', fontSize: '13px' }, BuzzStyle: { color: 'green', fontSize: '13px' } } })
今回は、divタグで実装しましたが、
リストで実装すれば、わざわざ{{ count }}でNumber表示を行わなくても済むかもしれません。
(Numberを後方に表示させることは難しいかもしれませんが)
やはり、学習コストがそこまで高くないことがVue.jsの良いところですね。
プログラム経験者が、以下を参考に頂ければ、
Vue.jsの知識が無くても、FizzBuzzくらいなら実装できると思います。
〇参考
参考に頂ければと思います。