Vue.js とやらを勉強
ありがたいことにこのご時世でも次の働き先が見つかった。 そういうことで転職の関係で次に使うやーつを勉強中(XAMLじゃないんかーい)。 ということでこれまでやってきたやつを複数回に分けてまとめる。 仕事もあって input も大量にしなきゃでまとめる時間がない。
目次
こいつはいっぱいある javascript とかで Web アプリ作るためのフレームワーク。 Nuxt.js っていうルーティングのためのフレームワークと組み合わせるけど、まだ
Nuxt.js は勉強してないんであとで。 ルーティングは複数ページ扱う Web アプリでページの遷移とかぐちゃぐちゃできる。
Node.js と Express っていうフレームワークとおんなじ。 割と普通のスクリプト言語なんだけど、Web の物体を動かせる(らしい)。
実はまだそこの動かすとこまでやれてない。 ただ、HTML + CSS + JavaScript はもうセットっぽい。
そこのフレームワークとして React とか Node.js とか Vue.js とかいろんなのが乱立してる。
戦国時代みたい。 スクリプト言語として勉強した印象は、this とか var / let とか巻き返し(だっけ?)とか
面倒なこともあるけど、まぁ普通のスクリプト言語って感じだった。 Vue.js の使い方もほんといっぱいあるけれど、まずは単一ファイルで使う基本から。 HTML ファイルを用意して、下記を head タグに入れる。 単一ならこれで一応使える。
body 部分は以下のようになる。 script タグ部分は javascript で書いて、message への値反映とかを vue.js がやってくれる感じ。 el プロパティは id 「app」に対して渡さなきゃいけないっぽい。
( id に「app2」とか用意して複数個やろうとして失敗はした。) ほんで、data 部分はオブジェクトで書く。今回みたいに HTML 部分に渡したいなら
同じプロパティで用意すること。 data にはオブジェクトを渡せばいいので、関数もいける。 関数なんでアロー関数も書ける。
かなり入力については寛容なようす。 ボタンを押してさっきの message を切り替える。 onclick 内に実行させたい関数名を書く。
そんで、script 部分にその関数を書くってわけ。 さくさく行く。次はテキストの内容をそのまんま反映する。
XAML とかでいうところの TextChange イベント。 oninput に実行したい関数を引数付きで書く。
event 引数には input タグが紐づいていて、その値を
「event.target.value」で抜き出してる。 v-bind とか v-html, v-if, v-for など HTML の属性として扱う重要なやつを
単一ファイルのものでまとめる。 それらをまとめ終わったら、vue/cli も使っていった
vue アプリについてまとめる。 この属性は基本中の基本で大事だし、v-for は知らないと
繰り返しでタグを用意するのがめちゃめちゃに面倒になる。Vue.jsって
JavaScript って
単一ページで使う Vue.js
<script src="https://unpkg.com/vue"></script>
<body>
<!-- message 部分を Vue.js で渡す -->
<div id="app"> {{ message }} </div>
<!-- vue.js 部分。 javascript で書く。 -->
<script>
let app = new Vue({
el: "#app",
data: {
message: "Hello World!"
}
})
</script>
</body>
<script>
let app = new Vue({
el: "#app",
data: function() {
return {
message: "Hello World!"
}
}
})
</script>
ボタン押して message 部分書き換え
<body>
<div id="app">{{ message }}</div>
<hr>
<button onclick="onClick();">click</button>
<script>
let data = {
message: 'Hello World',
}
let app = new Vue({
el: '#app',
data: data,
});
function onClick() {
data.message = 'You Clicked';
}
</script>
</body>
テキストの内容を反映
<body>
<div id="app">{{ message }}</div>
<hr>
<input type="text" oninput="textInput(event);"/>
<script>
let data = {
message: 'Hello World',
}
let app = new Vue({
el: '#app',
data: data,
});
function textInput(event) {
data.message = event.target.value;
}
</script>
</body>
次まとめること