Vue.jsを学ぶ - No.1
Vue.jsの基礎を学ぶ過程でいつでも振り返られる様に、メモしていきます。
Vue.jsアプリケーションを作る
アプリケーション(アプリ):コンポーネントを組み合わせたもの
コンポーネント:単体のオブジェクトのこと
新しくコンポーネントを作成するとき↓
var obj = new Vue({ オブジェクト });
Vue:フレームワーク側で定義されているクラス名
コンポーネントの中で使うデータやメソッドは引数として渡す。
引数:役割に応じたプロパティとしてオブジェクト表記する。
主なプロパティ
el: '#app', //どのHTMLと結びつけるかを定義 (id名)
data: {
//保持するデータを定義
},
methods: {
//メソッドを定義
},
filters: {
//フィルターを定義
},
computed: {
//算出プロパティを定義
},
watch: {
//ウォッチャを定義 ??
},
// ライフサイクルハックを定義
Vue.js公式HP↓
ライフサイクルハック
ライフサイクルハック:Vueが自動的にコンポーネントへ通知を送ってくれる仕組み
[ 発生するタイミング:ハック名 ]
インスタンス生成前:beforeCreate
インスタンス生成されVueの準備完了後:created
インスタンスがDOMと連結する前:beforeMount
インスタンスがDOMと連結した後:mounted
リアクティブデータが更新され、DOMに反映される前:beforeUpdate
リアクティブデータが更新され、DOMに反映された後:updated
インスタンスが破棄される直前:bedoreDestroy
インスタンスが破棄された直後:destroyed
例)サーバーからデータを読み込む時などは dataオプションでは対応できないため、createdライフサイクルで初期化処理をするなどして活用される。
ディレクティブ
「v-」で始まる独自の属性を併用することで、様々な機能が使える。
例)
v-bind:コンポーネントのデータとHTML要素を同期させる。
HTML
<div ivad="app">
<input type="text" v-bind:value="message">
</div>
JavaScript
var app = new Vue({
el: '#app',
data: {
message: 'こんにちは'
}
})
スコープ
データの活用には有効範囲がある。
関数の中でのみ有効:ローカルスコープ
関数の外側からも参照可能:グローバルスコープ
※グローバルスコープのリスク:他のライブラリと変数名が重なったりすると誤作動を引き起こし、エラーになってしまう。Vueのコンポーネントの独立性を活かすには、ローカルスコープを原則使う様にする。
レンダリング(ページを描画)
マスタッシュ({ }:ヒゲ:髭)構文でHTML内に記述すると、dataオプションに定義したプロパティの値が出力される。
{{ プロパティ名 }}
※{{・・・}}には、JavaScriptの式も記述可能
属性にバインドする
属性にバインドする時は、属性名の前に「v-bind:」をつける
<要素名 v-bind:属性名 ="プロパティ名">
style属性にバインドする
stylesheetに指定する場合、style="CSSプロパティ名:値;"と記述するが、以下の様にvueでは記述可能。
<要素名 v-bind:style="{cssのプロパティ名:アプリのプロパティ名}">
活用例
HTML
<div id=#app>
<p v-bind:style="{fontSize: pSize}">文字サイズは{{pSize}}です。</p>
</div>
JavaScript
var app = new Vue({
el:'#app',
data: {
pSize: '40px'
}
});
↓
文字サイズは40pxです。
キャメルケース
バインドする時の表記の仕方が、p-sizeではなく、pSize の様に、くっつけ、大文字を使って文字の境がわかる様に表記する方法。これを活用するのは、JavaScriptのオブジェクト表記だから。
class属性にバインドする
<要素名 v-bind:class="{class名:class名を出力する条件式}">
条件式が長い場合は、条件式をdataオプションに記述し、そのプロパティ名を記述するとシンプル。
続く…
サポート頂けるとモチベーション上がります!僕もますます頑張るので、一緒に頑張りましょう!!