💡ビューテンプレート


01.ビューテンプレート


01-1. ビューテンプレートとは?

  • ビューのテンプレートは、HTML、CSSなどの寸法属性をビューインスタンスで定義されたデータと論理に接続し、ブラウザでユーザが見ることができる形式のHTMLに変換する属性である.
  • templateプロパティの無効化
    <div id="app">
             <h3>{{message}}}}</h3> 
    </div>
    <script>
    	 new Vue({
    	 	el:'#app', 
    	 	data:{
    	 		message: 'Hello Vue.js!'
    	 	}
    	 });
    </script> 
    templateプロパティを使用する場合
    <div id="app"></div>
    <script>
    	new Vue({
    		el:'#app',
    		data: {
    		  message: 'Hello Vue.js!'	
    		},
    		template: '<h3>{{ message }}</h3>'
    	});
    </script>

    01-2. データのバインド

  • データバインディングは、HTML画面要素をビューインスタンスのデータに関連付けることを意味する.
    	<div id="app" v-once>
    		{{ message }}
    	</div>
    	<script>
    		new Vue({
    			el: '#app',
    			data:{
    			 	message:'Hello vue.js!'
    			}
    		})
    	</script>
    ヒゲかっこ
  • ビューインスタンスのデータをHTMLタグに接続する最も基本的なテキスト挿入方法です.
  • データ属性のメッセージ値が変更されると、ビューの反応性に応じて画面が自動的に更新されます.
  • ビューデータの値を変更したくない場合は、v-onceプロパティを使用します.
  • <div id="app">
    	<p v-bind:id="idA">아이디 바인딩</p>
    	<p v-bind:class="classA">클래스 바인딩</p>
    	<p v-bind:style="styleA">스타일 바인딩</p>
    </div>
    <script>
    	new Vue({
    		el:'#app',
    		data:{
    			   idA: 10, 
    			   classA: 'container', 
    			   styleA: 'color:blue'
    		}
    	});
    </script>
    v-bind
  • ビューデータ値をID、クラス、スタイルなどのHTML属性値に接続する際に使用するデータ接続方式.
  • 'v-bind:構文を「:」に簡略化できます.
  • 01-3. JavaScript式

  • データバインドメソッドの1つである{}}にJavaScript式を入れればよい.
  • <div id="app">
        <p>{{message}}</p>
        <p>{{message + '!!!'}}</p>
        <p>{{message.split('').reverse().join('')}}</p>
    </div>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    <script>
        new Vue({
            el:'#app',
            data: {
                message: 'Hello Vue!'
            }
        });
    </script>

    📢 JavaScript式での注意点
  • JavaScriptの宣言と分岐構文は使用できません.
  • 複雑な演算はインスタンスで処理する必要があり、画面には簡単な演算結果のみが表示されます.
  • <div id="app">
        {{ var a = 10; }} <!-- X, 선언문은 사용 불가능  -->
        {{ if (true) {return 100} }} <!-- X, 분기 구문은 사용 불가능 -->
        {{ true ? 100 : 0 }} <!-- O, 삼항 연산자로 표현 가능 -->
    
        {{ message.split('').reverse().join('') }} <!-- X, 복잡한 연산은 인스턴스 안에서 수행 -->
        {{ reversedMessage }} <!-- O, 스크립트에서 computed 속성으로 계산한 후 최종 값만 표현 -->
    </div>
    
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    <script>
        new Vue({ 
            el:'#app',
            data: {
                message: 'Hello Vue!'
            },
            computed : { //데이터 속성을 자동으로 계산해 주는 속성
                reversedMessage :  function() { // {{ reversedMessage }}에 표현되지 전에 연산을 수행하는 함수
                    return this.message.split('').reverse().join('');
                }
            }
        });
    </script>

    01-4. ガイド人

  • ビューアドバイザ(Directive)とは、HTMLタグにv接頭辞を有するすべての属性
  • を指す.
  • スクリーン上の要素の操作を容易にするための機能
  • ビューのデータ値が変更されると、画面上の要素が反応し、変更されたデータ値に基づいて更新されます.
  • 画面要素を直接制御する必要はなく、ビューの制御によってこれらの要素を操作することができる.
  • ディレクトリ名
    ロール#ロール#
    v-if
    指定したビューデータ値の真偽に基づいて、対応するhtmlタグを画面に表示または表示しません.
    v-for
    指定したビューデータの個数に応じて、対応するhtmlタグを繰り返し出力します.
    v-show
    v-ifと同様に、データの真偽に基づいて対応するhtmlタグを画面に表示または表示しません.ただし、v-ifはタグを完全に削除し、v-showはdisplay:none処理を行い、タグを表示せずに画面に保持します.
    v-bind
    htmlタグの基本プロパティをビューデータプロパティに関連付けます.
    v-on
    画面要素のイベントの検出と処理に使用します.たとえば、v-on:clickは、ラベル上のクリックイベントを検出し、特定の方法を実行します.
    v-model
    フォームで主に使用されるプロパティ.フォームに入力した値を、ビューインスタンスのデータとすぐに同期します.入力した値を保存してサーバに送信したり、他の論理を実行したりできます.input、select、textareaタグにのみ使用できます.
    <div id="app">
        <a v-if="flag">두잇 vue</a>
        <ul>
            <li v-for="system in systems">{{ system }}</li>
            <!-- v-for = "아이템명 in array" -->
        </ul>
        <p v-show="flag">두잇 vue</p>
        <h5 v-bind:id = "uid">뷰 입문서</h5>
        <!-- v-bind:속성 = "속성이름" -->
        <button v-on:click = "popupAlert">경고 창 버튼</button>
        <!-- v-on:이벤트이름 = "메소드이름" -->
    </div>
    
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    <script>
        new Vue({ 
            el:'#app',
            data: {
                flag:true,
                systems : ['andoroid', 'ios', 'window'],
                uid: 10
            },
            methods : {
                popupAlert : function() {
                    return alert('경고 창 표시');
                }
            }
        });
    </script>
    

    01-5. 高度なテンプレート技術

  • 計算プロパティ
  • の複雑なデータ演算の領域を定義します.

  • 計算プロパティの利点
  • データ属性値の変化に基づいて自動的に再計算されます.
  • キャッシュ:必要に応じて
  • をロードし、同じ接続性が繰り返されないように演算結果値を保存します.

  • 計算属性とメソッド属性の違い
  • メソッド属性は、呼び出し時にのみ論理を実行し、計算属性はターゲットデータの値を変更し、自動的に実行されます.
  • 方法:手動でデータを更新する計算:動的データ更新
  • メソッド属性は実行するたびに演算されるのでキャッシュは行われませんが、計算属性には以前の計算値があり、データが変更されていない限り、必要に応じてすぐに返されます.
  • の複雑な演算を繰り返して画面に表示する必要がある場合は、計算プロパティを使用することが有効です.
  • <div id="app">
        <p>{{ message }}</p>
        <button v-on:click="reverseMsg">문자열 역순</button>
    </div>
    
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    <script>
        new Vue({ 
            el:'#app',
            data: {
                message:'Hello Vue!'
            },
            // methods 속성
            methods: {
                reverseMsg: function(){
                    this.message =  this.message.split('').reverse().join('');
                    return this.message;
                }
            }
        });
    </script>
  • watchプロパティ
  • データの変化を検出し、特定の論理を自動的に実行する.
  • 計算プロパティと同様に、watchプロパティは、データ呼び出しなどの非同期処理に適しています.
  • 📢 非同期処理とは?
    Web上でデータを呼び出すと、サーバに送信された要求がいつ応答を受信するか分からないため、JavaScript演算に影響を与えないように、個別の領域でデータを要求して応答を待つ.
    <div id="app">
        <input v-model="message">
        <!-- v-model 뷰 인스턴스의 데이터와 즉시 동기화한다. 화면에 입력된 값을 저장하여 서버에 보내거나 watch와 같은 고급 속성을 이용하여 추가 로직을 수행한다 -->
    </div>
    
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    <script>
        new Vue({ 
            el:'#app',
            data: {
                message: 'Hello Vue!'
            },
            watch: {
                message: function(data){
                    console.log("message의 값이 바뀝니다 :", data);
                }
            }
        });
    </script>

    doit vueを参照してください。js