Vue

[Vue2] vue 미니 프로젝트 ToDo App 1

양치개발자 2023. 5. 16. 11:46
반응형

1. 뷰 Cli로 프로젝트 생성

$ npm install -g @vue/cli
$ vue create todo

 

2. CSS를 bootstrap로 쓰기

<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">

public > index.html 파일에다 넣는다.

 

App.vue

<template>
  <div id="app" class="container">
    <h1 class="text-center">Todo App</h1>
    <input
      v-model="todoText"
      type="text" 
      class="w-100 p-2" 
      placeholder="Type todo"
      @keyup.enter = "addTodo" 
    >
    <hr>
    <TodoComponent
    v-for="todo in todos" 
    :key="todo.id" 
    :todo="todo" />
  </div>
</template>

<script>
import TodoComponent from '@/components/TodoComponent.vue';
export default {
  components: {
    TodoComponent
  },
  data() {
    return {
      // todo 배열
      todos: [ 
        {id:1, text:'buy a car',  checked:false },
        {id:2, text:'play game',  checked:false },
      ],
      todoText:'' // todoText값 빈 값
    }
  },
  methods: {
    addTodo (e) {
      this.todos.push({
        id: Math.random(), // id를 랜덤으로 돌림
        text: e.target.value, // text는 input의 값임
        checked : false // checked
      }); 
      this.todoText = ''; // input 값 비우기 
    }
  }
}
</script>

TodoComponent.vue

<template>
    <div>
        <input type="checkbox" :checked="todo.checked">
        <span class="ml-3">{{ todo.text }}</span>
    </div>
</template>

<script>
export default { 
    // props로 부모 컨테이너 값 가지고 옴.
    props: {
        todo: {
            type: Object, // type object
            required:true // 무조건 값이 필요
        }
    }
}
</script>

<style>

</style>

 

실행 화면

처음 실행 화면
list 추가 한 후

 

참고 자료

1. 코지코더 Vue.js 2 강좌

https://www.youtube.com/playlist?list=PLB7CpjPWqHOtYP7P_0Ls9XNed0NLvmkAh 

 

뷰js 2 (Vue.js 2) 기초 익히기 기본 강좌!

안녕하세요 코지 코더입니다. 이번 시리즈는 뷰js 2 Vue.js 2 기초 익히기인데요 html, css 그리고 javascript 기본을 공부하신 분이 보면 유용한 시리즈입니다.

www.youtube.com

 

반응형