(Official VueJS 02) Basics

Vue.js 참조


반응형

  • Chrome Console
app.message = 'How are you?'

Hello VueJSHow are you?로 변경된다.


엘리먼트 속성 바인딩

<div id="app">
  <span v-bind:title="message">Binding?</span>
</div>
var app = new Vue({
  el: '#app',
  data: {
    message: '이 페이지는 ' + new Date() + ' 에 로드 되었다.'
  }
})

화면에 Binding?이 표시된다.

마우스를 올리면, 이 페이지는 Sun Sep 01 2019 18:14:21 GMT+0900 (한국 표준시)에 로드 되었다.가 표시된다.


디렉티브

  • Vue에서 제공하는 특수 속성이다.

  • v- 접두사가 붙는다.
  • 렌더링 된 DOM에 특수한 반응형 동작을 한다.


조건문

<div id="app">
  <p v-if="seen">You can see me now.</p>
</div>
var app = new Vue({
  el: '#app',
  data: {
    seen: true
  }
})

화면에 You can see me now.가 표시된다.

Chrome Console에 app.seen = false를 입력하면, You can see me now.가 사라진다.


반복문

<div id="app">
  <ol>
    <li v-for="todo in todos"></li>
  </ol>
</div>
var app = new Vue({
  el: '#app',
  data: {
    todos: [
      { text: 'HTML' },
      { text: 'CSS' },
      { text: 'JS' },
      { text: 'ReactJS' }
    ]
  }
})

1. HTML

2. CSS

3. JS

4. ReactJS가 표시된다.

Chrome Console에 app.todos.push({ text: 'VueJS' })를 입력하면,

5. VueJS가 추가된다.


사용자 입력 핸들링

<div id="app">
  <p></p>
  <button v-on:click="reverseMessage">메시지 뒤집기</button>
</div>
var app = new Vue({
  el: '#app',
  data: {
    message: 'How are you?'
  },
  methods: {
    reverseMessage: function() {
      this.message = this.message.split('').reverse().join('')
    }
  }
})

화면에 How are you? 텍스트와 메시지 뒤집기 버튼이 표시된다.

버튼을 누르면, ?uoy era woH로 뒤집힌다.


양방향 바인딩

<div id="app">
  <input v-model="message">
  <p></p>
</div>
var app = new Vue({
  el: '#app',
  data: {
    message: ''
  }
})

input에 입력하는 대로 표시된다.


컴포넌트

  • 작고, 그 자체로 제 기능을 하며, 재사용할 수 있다.
  • 대규모 애플리케이션을 구축할 수 있게 해주는 추상적 개념이다.
  • 컴포넌트는 본질적으로 미리 정의된 옵션을 가진 Vue 인스턴스이다.


<div id="app">
  <ol>
    <todo-item v-for="item in groceryList" v-bind:todo="item" v-bind:key="item.id"></todo-item>
  </ol>
</div>
Vue.component('todo-item', {
  props: ['todo'],
  template: '<li></li>'
})

var app = new Vue({
  el: '#app',
  data: {
    groceryList: [
      { id: 0, text: 'milk' },
      { id: 1, text: 'fruits' },
      { id: 2, text: 'water' }
    ]
  }
})

1. milk

2. fruits

3. water가 표시된다.