Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

This article is a Private article. Only a writer and users who know the URL can access it.
Please change open range to public in publish setting if you want to share this article with other users.

More than 5 years have passed since last update.

Gizumovie Advent 2017 用 ビュー js

Posted at

はい、ということで書かせていただきやす。

今回はあくまでもvueの動き方とその性質を、今までvue.jsを見たことも触ったこともない人が
「あ、vueってなんかすごいのかもしれない。」
「あ、意外とvueって書きやすいのかもしれない。」
くらいに感じられるようになったらいいなくらいの内容です。

きちんとした教材レベルの解説が欲しい場合は参考書を買うか、「vue.js公式」、または「vue.js 入門」でググりませう。

何故なら、私がそもそも最近vueを触り始めたばかりだから。
なんなら技術者としてもまだまだ小童。日々精進。

ので、今回環境構築はカット。
今回はさらっと触ってみて面白そうなら調べて各々で環境構築をしてみませう。うん。
他にも色々ありますが、これを使うと速攻でvue.js体験できまする。
https://jsfiddle.net

Jsのとこの歯車マークからvue.js(バージョン最新)を選択。
18147347-8BC5-4001-8C26-6A09A685666A.png

ではいきませう。
まずはみんな大好き hello world

あ、挿絵は画像でござる。見て書きませう。
やっぱり書かなきゃ覚えないし、理解もできませぬ。(持論

まず最初にhtmlを以下のように記述。
B48D4201-1F18-42D3-A597-E42BB9DE1E72.png

そしてjs部分に以下を記述。
イケてない感じに仕上がりますが、今回はあくまでVue.jsメインなのでcssはあてません。
E31C8CA2-E4F1-4749-82E8-FDB5A0EBD223.png

左上の【RUN】をクリックすれば hello world が表示されるはずです。

ざっくり説明すると、自身でhelloというインスタンス(おっきい箱的な感じ)を生成して、
その中にあるdataオブジェクト(小分けにした箱的な感じ)の中からgreetingという自作のデータを持ってきてそのまま当て込んで表示しているだけ。

ポケモンに置き換えるなら
ポケモンの中にいるピカチュウってモンスターの名前を表示してる感じでしょうか。(違う?

つまりjs部分を弄ってこのdataの中を書き換えて、pichuってのを追加
008342B2-4333-4E3C-9CF6-105C1B0BA614.png

HTMLにもこう書く
324A99D0-0433-4DAE-9743-A00FDF7B7A26.png

すると
37233EA5-53BD-4602-B579-5B5265EDA62F.png

こんな風になる。これがオブジェクト指向。。。(多分)
個人的にjqueryもわかりやすかったんですが、vueもそれぞれのデータ関係を一個一個管理できる感じで一つずつの処理がすごく読みやすいし管理がしやすいと感じ申した。

で、今回はこのdata部分を基盤にいろいろと触っていくわけなのですが、そもそもこのVue.jsで生成したインスタンスの中身、new vue({ }) 直下にはオブジェクトとして入れられるものが色々あるのですが、今回の記事では以下の3つが入れられます。

『1つ目』
【el:】エレメントの略(多分)。
要はhtml側で指定した「Id」のこと。
このdom要素内のデータをvueでいろいろ触れる。

『2つ目』
【data:】データ。
html上で『{{ }}』内に記述するとそれを表示することができる。
多分他にもいろいろ使えるかもだけど今回はこの認識でよしとさせてください。

『3つ目』
【methods:】メソッズ。
この中で書いたメソッドを使ってdataをいろいろ触る。
いわゆる呪文部分。

では、呪文つながりでさっそく上記を使ってピカチュウにはメラを撃ってもらいませう。

まずhtmlを下記に書き換えて、
CC0B5169-D4D6-4CDD-AD32-78DD6C014203.png

methodsを作成。
38B65358-F143-4543-92F1-B7D6E4A1C595.png

これでメラボタンをクリックすれば君の生成したピカチュウはクリックした回数分、紅蓮の炎を放ってくれることでしょう。
メラを撃てない場合はわざマシンを拾ってきて…いやまず自身のタイポ(タイプミス)を疑いませう。
0E994431-753E-4415-AAB3-C5C8065D3610.png

さて、正直こんなメソッド簡単すぎて鼻ほじってる人が多いかもしれませんが、ざっくり解説するとステップは3段階です。

≪すてっぷ1≫
htmlに記載されている【v-on:click="mera"】で、ボタンクリック時にjs側の【mera】メソッドを呼び出している。

これはなんとなくわかるのではないでしょうか、最初はなんとなくでいいと思います。はい。
で、『v-on:click』 っていうのが vue特有の属性。
この『click』はほかのものに変えてもいけます。
試しに『click』を『keyup.enter』にしてみましょう。
多分一回ボタンをクリックして見ると、ピカチュウはメラを撃たないはずです。
しかし、エンターキーを押すとピカチュウは再び紅色の業火を放ってくれるでしょう。

≪すてっぷ2≫
【mera】メソッドの中で【data】に定義してある【attackCount】の数をインクリメントしている。
これは100%わかるのではないでしょうか。一応説明すると
最初に【attackCount: 0】で初期値を設定しているのです。
んで、クリックするたびに【attackCount++】の、【++】によって数字が1ずつ増加する。これだけ。簡単ですね。

≪すてっぷ3≫
増加させた【attackCount】の数字を、html側の【{{ attackCount }}】に随時反映して映し出す。
この結果、ボタンを押すたびに数字がどんどん書き換わっていくっていう仕組みです。

さて、せっかくメラ撃てるんだしあてる相手がほしいところ。
ってことで、さらに改造。

htmlをこうして
D3B983C7-826A-415A-8B90-672DF92BDE65.png

jsも追記
03068F20-B8CF-4A2B-BD96-3E97DFAAB42D.png

これでメラを撃ちたい的の名前を打ち込むと、下のテキストにもその名前が反映されるはずです。
撃てない場合は(以下略)
541E05B5-FD52-461C-9636-17C09891C530.png

さて、今回も超絶簡単なメソッドですが、ざっくり解説すると今回のステップは2段階です。

≪すてっぷ1≫
htmlに記載されている【v-modal="targetName"】で、【data】内の【targetName】に文字を反映(双方バインディングという)をさせている。
わけわからんとか思った人ももしかしたらいるかもしれないですが、要はテキストとして打ち込んだ文字がjs側の【data】に定義されている【targetName=’’】の、【’’】の中にはめ込まれているってニュアンスでいいのではないでしょうか。

≪すてっぷ2≫
ステップ1で取り込まれたテキストを、htmlに記載されている【

{{ targetName }}に{{ attackDamage }}のダメージ!

】内の【{{ targetName }}】に当て込んでいる。
これを即時に、テキストを書き換えた瞬間に随時行っているわけですね。

※methods内のattackDamegeカウントの説明は省略。

今回のを使えばメラを任意のinputに変更してサンダガや石破天驚拳にしてみたり、技を使っている側をミッ○ーマウスに変えたりとかもできる。(ハハッ)
任意のdataを作成して、中身を配列を作成して、MP要素をつけてメラするたびにMPが減るとか、HP要素作ってみたりとかもできまする。

まぁ、あくまで今回のものを編集するのでいえば。っということにはなってしまうかもしれませぬが。

本来であれば、Todoアプリ(これすごい作りやすい)などのアプリや、APIを使って入力テキストに応じた検索結果を即時に持ってきたりなどなど、幅広く使えるのがVue.jsです。(らしい)

今回のはメソッドも使い方もほんとのほんとに最低限のレベル。
使い方を考えるともはや最低限以下かもしれない。恐らくそう。
でもきっとオブジェクト指向とかもよくわかってない人向けになってるはず・・・。

今までvue.jsを見たことも触ったこともない人が
「あ、vueってなんかすごいのかもしれない。」
「あ、意外とvueって書きやすいのかもしれない。」
くらいに感じられていると願いたい。。。

まぁいうて私もそんな理解できてるわけではないので、有識者からすれば「いや、そもそも完全に理解してから書けよ」って話なのかもしれないですが。

兎にも角にも、今回ので各言語におけるインスタンスやオブジェクトについてだったり、Vue.jsそのものについて興味持ってくれる人が増えればいいなあとおもうしだいでありんす。
調べれば優良記事や優良サイトは山ほどあるので是非この機会に色々触って見てもらえれば!

以上!

0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?