오늘도 개발자 Backend Developer

[Vue.js] 1-1. 시작하기 : CDN 링크로 배워보자.

1. Vue란?

  • front-end framework
  • 배우기 쉽다.
  • view에 최적화 되어 있다.
  • MVVM(Model-View-ViewModel) 패턴을 기반으로 디자인

2. 간단하게 시작해보자.

  • index.html 파일을 만들고, 아래 링크를 포함한 페이지를 만들어보자.

https://unpkg.com/vue or

https://cdn.jsdelivr.net/npm/vue

1) index.html

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <title>Vue.js Sample</title>
</head>
<body>

<div id="root">
    <p></p>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue"></script>
<script>
    new Vue({
        el: '#root',
        data: {
            msg: 'Hello Vue.js!'
        }
    })
</script>
</body>
</html>
  • 결과

image

3. Declarative Rendering

  • 디렉티브는 vue에서 제공하는 속성, v- 로 접두어가 붙는다.

1) v-if

  • 조건문 사용할 때 사용.
<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <title>Vue.js Sample</title>
</head>
<body>

<div id="root">
    <div v-if="type === 'LOGIN'">로그인 되었습니다.</div>
    <div v-else-if="type === 'LOGOUT'">로그아웃 되었습니다.</div>
    <div v-else> 로그인이 필요합니다.</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue"></script>
<script>
    var app = new Vue({
        el: '#root',
        data: {
            type: "LOGOUT"
        }
    })
</script>
</body>
</html>
  • template 에도 사용가능
<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <title>Vue.js Sample</title>
</head>
<body>

<div id="root">
    <template v-if="type === 'LOGIN'">
        <div>
            로그인 되었습니다.
        </div>
    </template>
    <template v-else-if="type === 'LOGOUT'">
        <div>
            로그아웃 되었습니다.
        </div>
    </template>
    <template v-else>
        <div>
            로그인이 필요합니다.
        </div>
    </template>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue"></script>
<script>
    var app = new Vue({
        el: '#root',
        data: {
            type: "LOGIN"
        }
    })
</script>
</body>
</html>

2) v-show

  • 보여질지, 숨길지에 대해서 설정할 수 있는 값이다.
  • 일단 뷰 렌더링이 진행되고, css로 숨길지 나타낼지를 정한다.
  • 샘플코드
<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <title>Vue.js Sample</title>
</head>
<body>

<div id="root">
    <div v-show="visible">보이나?</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue"></script>
<script>
    var app = new Vue({
        el: '#root',
        data: {
            visible: true
        }
    })
</script>
</body>
</html>
  • v-if는 토글 비용이 높고 v-show는 초기 렌더링 비용이 더 높다. 자주 바꾸기를 원한다면 v-show를, 런타임 시 조건이 바뀌지 않으면 v-if를 권장한다..
  • chrome 개발자 console 창에 ‘app.visible = false;’를 입력해보면 해당 div가 사라지는 걸 확인 할 수 있다.

3) v-for

  • for loop
  • 목록 구현할때 많이 쓰이는 디렉티브
  • 샘플 코드
<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <title>Vue.js Sample</title>
</head>
<body>

<div id="root">
    <ul>
        <li v-for="fruit in fruits" :key="fruit"></li>
    </ul>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue"></script>
<script>
    new Vue({
        el: '#root',
        data: {
            fruits: ['apple', 'banana', 'orange']
        }
    })
</script>
</body>
</html>
  • 결과

image

4) 기타

  • v-on, v-bind, v-model 등이 있다.

참고

  • https://vuejs.org/v2/guide/index.html
  • https://kr.vuejs.org/v2/guide/index.html