본문 바로가기
Front-End/Vue

[장기효(캡틴판교) - Vue.js 시작하기] 1. Vue.js 특징

by hongdor 2021. 1. 23.
728x90

출처 : 인프런의 장기효(캡틴판교)님의 강좌 / Vue.js 시작하기 - Age of Vue.js

 

 

1. Reactivity 

: 변수의 값이 변하면 연동된 변수들의 값이 실시간으로 모두 변한다.

 

(1) java script로 Reactivity 구현

 : viewModel 에 접근할때마다 get, set 메소드의 실행을 통해 연관된 값들을 같이 변경시켜 준다.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <div id="app"></div>
    <script>
        var div = document.querySelector('#app');
        var viewModel = {};

        // Object.defineProperty('대상 객체', 객체의 속성, {
        //     //..문법 정의할 내용
        // })

        (function(){
            function init() {
                Object.defineProperty(viewModel, 'str', {
                    //속성에 접근했을 때 동작을 정의
                    get: function () {
                        console.log('접근');
                    },
                    //속성에 값을 할당했을 때의 동작을 정의
                    set: function (newValue) {
                        console.log('할당', newValue);
                        render(newValue);
                    }
                });
            }

            function render(value) {
                div.innerHTML = value;
            }

            init();
        })();        
    </script>
</body>
</html>

 

 

(2) Vue.js - 완전히 같지는 않지만 간결하다. 그냥 이렇게 생겼구나 정도로 확인

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=div, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <div id="app"></div>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    <script>
        let vm = new Vue({
            el: '#app',
            data:{
                message:'hi'
            },
            
        });
    </script>
</body>
</html>

 

728x90

댓글