그랜파 개발자의 프론트엔드 공부-Vue

Vue로 PWA 개발, ChatGPT에게 프론트엔드 Vue 예제를 만들어 달라 했습니다.

그랜파 개발자 2024. 11. 17. 01:47

Vue로 PWA 개발 - 그랜파 개발자.

Chat GPT에게 물었습니다.

vue의 예제 프로그램 하나 만들어줘.

ChatGPT

Vue.js를 사용하여 간단한 할 일 목록 (To-Do List) 애플리케이션을 만들어 보겠습니다. 이 예제는 사용자가 할 일을 추가하고, 완료 표시를 하며, 목록에서 삭제할 수 있도록 구현합니다.

1. 프로젝트 생성 및 기본 설정

먼저, Vue CLI를 사용하여 새로운 Vue 프로젝트를 생성합니다.

npm install -g @vue/cli
vue create todo-app
cd todo-app
npm run serve

2. App.vue 파일 수정

App.vue 파일을 열고 아래와 같이 코드를 작성하여 기본적인 UI와 기능을 구현합니다.

<template>  
  <div id="app">  
    <h1>To-Do List</h1>  
    <div class="todo-input">  
      <input v-model="newTodo" placeholder="할 일을 입력하세요" @keyup.enter="addTodo" />  
      <button @click="addTodo">추가</button>  
    </div>  
    <ul>  
      <li v-for="(todo, index) in todos" :key="index">  
        <input type="checkbox" v-model="todo.completed" />  
        <span :class="{ completed: todo.completed }">{{ todo.text }}</span>  
        <button @click="removeTodo(index)">삭제</button>  
      </li>  
    </ul>  
  </div>  
</template>  

<script>  
export default {  
  data() {  
    return {  
      newTodo: "", // 새 할 일 내용  
      todos: \[\] // 할 일 목록  
    };  
  },  
  methods: {  
    // 새로운 할 일을 목록에 추가  
    addTodo() {  
      if (this.newTodo.trim()) {  
        this.todos.push({ text: this.newTodo, completed: false });  
        this.newTodo = ""; // 입력 필드 초기화  
      }  
    },  
    // 할 일 목록에서 특정 할 일을 삭제  
    removeTodo(index) {  
      this.todos.splice(index, 1);  
    }  
  }  
};  
</script>  

<style>  
#app {  
  font-family: Arial, sans-serif;  
  text-align: center;  
  margin-top: 50px;  
}  
.todo-input {  
  margin-bottom: 20px;  
}  
input\[type="text"\] {  
  padding: 8px;  
  width: 200px;  
}  
button {  
  margin-left: 10px;  
  padding: 8px 12px;  
  cursor: pointer;  
}  
ul {  
  list-style-type: none;  
  padding: 0;  
}  
li {  
  display: flex;  
  align-items: center;  
  margin-bottom: 10px;  
}  
.completed {  
  text-decoration: line-through;  
  color: #888;  
}  
</style>

3. 코드 설명

1. 템플릿:

  • v-model을 사용하여 newTodo라는 변수를 입력 필드와 양방향으로 바인딩합니다.
  • 사용자가 Enter 키를 누르거나 "추가" 버튼을 클릭하면 addTodo 메서드가 호출되어 새로운 할 일이 목록에 추가됩니다.
  • v-for 디렉티브를 사용하여 todos 배열을 순회하고, 각 할 일을 li 항목으로 렌더링합니다.
  • 각 할 일에는 완료 상태를 표시하기 위한 체크박스와 삭제 버튼이 포함되어 있습니다.

2. 메서드:

  • addTodo: newTodo 값이 비어 있지 않을 때 할 일 목록에 추가하고, newTodo를 비웁니다.
  • removeTodo: splice 메서드를 사용하여 todos 배열에서 특정 인덱스의 할 일을 삭제합니다.

3. 스타일:

  • completed 클래스가 추가된 항목은 취소선과 색상이 변경되도록 설정했습니다.

실행 방법

npm run serve로 로컬 서버를 시작한 후 브라우저에서 http://localhost:8080으로 이동하면 앱을 볼 수 있습니다.

 

이 예제는 Vue.js의 기본적인 기능인 데이터 바인딩, 이벤트 처리, 리스트 렌더링, 상태 관리를 잘 보여줍니다. 이 기본적인 기능을 확장하여 더 복잡한 기능도 쉽게 추가할 수 있습니다.

 

ChatGPT가 시키는 대로 해 봅니다.

 

Vue 프로젝트 Beta Test : mylog, 일상의 기록