7
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

30分でわかるVue.js入門

Posted at

#目的
フロントエンドのJSを知らないので、どれでもいいので理解したい。
フロントエンドで主流は廃れたJQueryを除くと3つある。

  1. Angular.js
  2. React.js
  3. Vue.js
    このなかで、Github上で一番人気があるのがVue.jsである。
    なので、Vue.jsのザックリ理解するために入門編としてまとめてみた。

#1.Vue.jsとは
 JavaScriptフレームワークの1つで、MVCモデルのView層を扱います。
 読み方:ビュードットジェイエス
 特徴:学習コストが低い

 ※スペルを間違えやすいので、声に出すと間違えない。
 ○:ブイユーイー
 ✗:ブイイーユー

###対象ブラウザ:ECMAScript5(エクマスクリプト)をサポートするブラウザ。
      簡単に言うと、最近のJavaScript標準をサポートするブラウザ。→Chrome,IE9以降

#2.ツール

 Vue DevtoolsというChromeの拡張機能が公開されている。
https://chrome.google.com/webstore/detail/vuejs-devtools/nhdogjmejiglipccpnnnanhbledajbpd?hl=ja&
検索ワード:vue chrome プラグイン

 Nuxt.jsという便利なフレームワークも提供されており、そちらを使うようになってからは
もっぱらVSCodeを利用している。

VSCode
https://azure.microsoft.com/ja-jp/products/visual-studio-code/

VSCode日本語化
https://qiita.com/ohno888/items/b9e955a2ab1ad0e09767

#3.セットアップ
 Vueはライブラリなので、downloadして読み込ませるか、CDNを利用する。
 https://jp.vuejs.org/v2/guide/installation.html
 以下、CDNが使えるのでそちらを利用して開発できる。
 ※CDNとはコンテンツデリバリーネットワークの略で、大容量のデジタルコンテンツをインターネット上で大量配信するためのネットワークのこと。

#4.さっそくHello World

hello.html
<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<title>Vue.js</title>
	<script src="https://cdn.jsdelivr.net/npm/vue"></script>
</head>
<body>
	<!--Vueデータを出力する-->
	<div id="app">{{ msg }}</div>
	
	<script>
	// id=appの要素にVueを適用する
	const app = new Vue({
		el:'#app',
		data:{ msg:'Hello World!' }
	})
	</script>
</body>
</html>

###解説
(1){{プロパティ名}}でデータ出力する。
(2)elプロパティはオブジェクトを割り当てる。キー名:値の形式で指定する。

作法だけ覚えれば簡単。チートシートなどを用意すれば誰でも書ける。

#5.次はイベントハンドリング(ボタンアクション)

event.html
<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<title>Vue.js</title>
	<script src="https://cdn.jsdelivr.net/npm/vue"></script>
</head>
<body>
	<!--Vueデータを出力する-->
	<div id="app">
		<button v-on:click="changeMsg">change</button>
		<p>{{ msg }}</p>
	</div>
	
	<script>
	// id=appの要素にVueを適用する
	const app = new Vue({
		el:'#app',
		data:{ msg:'hoge' },
		methods:{
			changeMsg:function(){
				this.msg = 'fuga'
			}
		}
	})
	</script>
</body>
</html>

###解説
「v-on:DOMイベント」でイベントハンドリングが実装できる。
methodsプロパティに呼び出されるメソッドを記述する。

#6.コンポーネント

component.html
<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<title>Vue.js</title>
	<script src="https://cdn.jsdelivr.net/npm/vue"></script>
</head>
<body>
	<!--Vueデータを出力する-->
	<div id="app">
		<my-comp></my-comp>
	</div>
	
	<script>
	Vue.component('my-comp',{
		template:'<h1>hogehoge</h1>'
	})
	var app = new Vue({
		el:'#app',
	})
	</script>
</body>
</html>

###解説
コンポーネントは「Vue.component()」で定義します。
templateプロパティにコンポーネントに含める要素を指定します。

#7.ディレクティブ
Vue.jsではHTMLタグに「v-**」の属性を指定することができ、これを「ディレクティブ」と呼びます。
ディレクティブを使いこなすことが、Vue.jsを使いこなす第一歩と言えます。

#代表的なディレクティブ
v-text テキストをレンダリングする

v-html HTMLをレンダリングする。タグも変換しないで出力します。
でタグもHTMLで出力できます。rawHTMLが値

v-show 条件に応じたレンダリング制御を行う
 CSSのdisplayプロパティで表示を制御

v-if,v-else,v-else-if 条件分岐を行う
 要素自体の有無を制御

v-for 繰り返しを行う

v-on イベントハンドリングを実装する
 @で記述を省略することができます。

v-bind HTML属性を割り当てる
 :で記述を省略することができます。

v-model 入力フォームへモデルを割り当てる
 input,select,textareaに対してVueオブジェクトのデータとフォーム部品の値を関連付けます。

v-pre テキストをそのまま出力する

v-once 一度だけレンダリングする
 レンダリングを1度だけ行い、それ以降は変数が変動しても、表示に反映させなくします。

#8.最後は実践例(リアルタイム入力チェック)

validation.html
<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<title>Vue.js</title>
	<script src="https://cdn.jsdelivr.net/npm/vue"></script>
	<style>
		#app .error{
			color: red;
		}
	</style>
</head>
<body>

	<!--Vueデータを出力する-->
	<div id="app">
		<input type="text" v-model="msg">
		<div class="error" v-if="error.require">必須項目です</div>
		<div class="error" v-if="error.tooShort">短すぎます</div>
		<div class="error" v-if="error.tooLong">長すぎます</div>
	</div>
	
	<script>
	const app = new Vue({
		el:'#app',
		watch:{
			msg:function(newVal, oldVal){
				this.error.require = (newVal.length < 1)?true:false;
				this.error.tooShort = (newVal.length < 3 && newVal.length > 0)?true:false;
				this.error.tooLong = (newVal.length > 5)?true:false;

			}
		},
		data:{
			msg:'hoge!',
			error: {
				require: false,
				tooShort: false,
				tooLong: false
			}
		}
	})
	</script>
</body>
</html>

###解説と注意点
watchは、入力値を監視するためのオプション。

Vueのメソッドやプロパティはカンマでつなぐ必要あり。忘れやすいので注意。上でいうとdataの前のカンマ
app .errorの指定で、appの後ろに空白が必要


以上でVue.jsの入門編は終わり。
他にもVue RouterやVuexなど色々あるが、
まずは上記を押さえれば入門者としては良いと考えています。
##今後の記載予定
入門編:当記事
初級者編:Vue CLI、Vue Router、Vuexなど
中級者編:Nuxt.jsなどを利用し他システムとの連携

7
6
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
7
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?