Study/Vue

Vue.js 시작하기 08. 템플릿

going.yoon 2022. 1. 22. 14:29

뷰에서 데이터를 화면에 표시하는 방법은 두가지가 있다. 

데이터 바인딩과 디렉티브! 코드로 알아보자.

 

<body>
    <div id="app">
        {{num}} <!--#1. bind 방식 -->
        {{doubleNum}}
        <p v-bind:id="uuid" v-bind:class="name"></p> <!-- #2. 디렉티브 방식 -->
        <!--이 태그의 id는 뷰 인스턴스 데이터의 uuid라는 값을 주입받는다.-->
        <div v-if="loading"> //# 3. 클래스 바인딩 v-if
            Loading..
        </div>
        <div v-else> 
            test user has been logged in
        </div>
        <div v-show="loading">  <!-- #.3 클래스 바인딩 v-show -->
            Loading..2
        </div>
    </div>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
    <script>
        new Vue({
            el: '#app',
            data : {
                num : 10 ,
                uuid : 'abc1234',
                name : 'text-blue',
                loading : true
            } ,
            computed : { // # 4. computed 속성
                doubleNum : function(){
                    return this.num*2;
                }
            }
        });
    </script>
</body>

 

#1. bind 방식 : {{}} 태그 안에 변수 주입을 통해 데이터를 표현하는 방법

#2. 디렉티브 방식 : v-bind: Api를 활용하여 id값에 뷰 인스턴스의 데이터 변수값을 주입하는 방식.

                            : v-bind:class , v-bind:id 등 속성값들을 인스턴스의 변수를 통해 관리할 수 있다.

#3. 클래스 바인딩 : 뷰 인스턴스의 변수값에 조건을 부여하여 속성들을 관리하는 방식. if 와 show 의 차이점은

       - if : 조건에 해당하지 않을 경우 해당 영역을 소스에서 아예 날림

       - show : 소스에서 날리지 않고 show 속성값을 false로 하여 데이터를 숨김

       : 아래의 그림을 보면, loading 값이 false일 때 Loading..에 해당하는 태그는 개발자도구에서 아예 보이지 않는다.

 

#4. computed 속성 : 보통 화면과의 변수 binding은 뷰 인스턴스의 데이터 변수와 맵핑되지만, computed 를 통해서 data를 가공한 값을 처리할 수 있다. 이러한 데이터 형태를 computed형이라고 함.

 

 

 

추가적으로 마우스와 키보드 이벤트를 처리할 때 쓰는 v-on 디렉티브와 뷰 인스턴스의 메소드 속성을 알아보자. 코드로 알아보자.

<body>
    <div id="app">
        <button v-on:click="logText">click</button>
        <input type="text" v-on:keyup.enter="logText">
    </div>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    <script>
        new Vue({
            el: '#app',
            methods:{
                logText : function(){
                    console.log('clicked');
                }
            }
        });
    </script>
</body>

 

 

해당 포스팅은 인프런의 Vue.js 시작하기 - Age of Vue.js 학습 후 정리한 내용임을 알려드립니다.