자바스크립트를 배우면서 가장 중요한 것은 배운 개념을 실전에서 활용하는 것이에요.
오늘은 할 일 목록(Todo List) 앱을 만들어 보면서 지금까지 배운 개념을 적용해 보겠습니다.
또한, 프로젝트를 GitHub Pages에 배포하는 방법도 알아볼 거예요. 🚀
미리보기
See the Pen Untitled by 해련 (@iuqtnifm-the-reactor) on CodePen.
1. 프로젝트 개요
📌 기능 요구사항
- 사용자가 할 일을 추가, 삭제할 수 있음
- 할 일을 완료 처리할 수 있음
- 데이터를 localStorage에 저장하여 새로고침해도 유지됨
✔ HTML, CSS, 자바스크립트의 DOM 조작, 이벤트 핸들링, localStorage 활용
2. 프로젝트 폴더 구조
todo-app/
│── index.html
│── style.css
│── script.js
✔ 모든 파일을 한 폴더(todo-app/)에 저장하여 관리
3. HTML 작성 (index.html)
기본적인 할 일 목록의 UI를 작성해요.
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>할 일 목록</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<div class="container">
<h1>📝 할 일 목록</h1>
<div class="todo-input">
<input type="text" id="taskInput" placeholder="새로운 할 일 입력">
<button id="addTaskBtn">추가</button>
</div>
<ul id="taskList"></ul>
</div>
<script src="script.js"></script>
</body>
</html>
✔ 입력창과 버튼, 할 일 목록을 담은 ul 태그를 추가
✔ script.js를 불러와서 동작 구현
4. CSS 스타일 (style.css)
깔끔한 디자인을 적용해요.
body {
font-family: 'Arial', sans-serif;
text-align: center;
background-color: #f4f4f4;
}
.container {
max-width: 400px;
margin: 50px auto;
background: white;
padding: 20px;
border-radius: 8px;
box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.1);
}
.todo-input {
display: flex;
justify-content: space-between;
margin-bottom: 20px;
}
input {
flex: 1;
padding: 8px;
border: 1px solid #ccc;
border-radius: 4px;
}
button {
padding: 8px 12px;
border: none;
background-color: #28a745;
color: white;
cursor: pointer;
border-radius: 4px;
}
button:hover {
background-color: #218838;
}
ul {
list-style: none;
padding: 0;
}
li {
display: flex;
justify-content: space-between;
background: #f9f9f9;
padding: 8px;
margin: 5px 0;
border-radius: 4px;
}
.completed {
text-decoration: line-through;
color: gray;
}
✔ 할 일을 추가할 입력창과 버튼을 가로 정렬
✔ 완료된 할 일은 text-decoration: line-through로 표시
5. 자바스크립트 기능 구현 (script.js)
이제 할 일 추가, 삭제, 완료 처리, localStorage 저장 기능을 구현해요.
document.addEventListener("DOMContentLoaded", () => {
const taskInput = document.getElementById("taskInput");
const addTaskBtn = document.getElementById("addTaskBtn");
const taskList = document.getElementById("taskList");
// 저장된 데이터 불러오기
loadTasks();
// 할 일 추가 이벤트
addTaskBtn.addEventListener("click", addTask);
taskInput.addEventListener("keypress", (event) => {
if (event.key === "Enter") addTask();
});
function addTask() {
let taskText = taskInput.value.trim();
if (taskText === "") return;
const taskItem = createTaskElement(taskText);
taskList.appendChild(taskItem);
saveTasks();
taskInput.value = "";
}
function createTaskElement(text) {
const li = document.createElement("li");
li.innerHTML = `
<span>${text}</span>
<button class="complete">✅</button>
<button class="delete">❌</button>
`;
li.querySelector(".complete").addEventListener("click", () => {
li.classList.toggle("completed");
saveTasks();
});
li.querySelector(".delete").addEventListener("click", () => {
li.remove();
saveTasks();
});
return li;
}
function saveTasks() {
let tasks = [];
document.querySelectorAll("#taskList li").forEach((li) => {
tasks.push({
text: li.querySelector("span").innerText,
completed: li.classList.contains("completed"),
});
});
localStorage.setItem("tasks", JSON.stringify(tasks));
}
function loadTasks() {
let tasks = JSON.parse(localStorage.getItem("tasks")) || [];
tasks.forEach((task) => {
let li = createTaskElement(task.text);
if (task.completed) li.classList.add("completed");
taskList.appendChild(li);
});
}
});
✔ addTask(): 할 일 추가 기능
✔ createTaskElement(): 동적으로 리스트 아이템 생성
✔ saveTasks(): 할 일 데이터를 localStorage에 저장
✔ loadTasks(): 저장된 데이터를 불러와 화면에 표시
6. GitHub Pages로 프로젝트 배포
6.1 GitHub Repository 만들기
- GitHub에서 새로운 Repository 생성 (이름: todo-app)
- 프로젝트 폴더에서 Git 초기화 및 파일 추가
git init git add . git commit -m "첫 커밋" git branch -M main git remote add origin https://github.com/사용자이름/todo-app.git git push -u origin main
6.2 GitHub Pages 활성화
- GitHub에서 todo-app Repository로 이동
- Settings → Pages 메뉴 선택
- Branch를 main으로 설정 후 저장
- 잠시 후 https://사용자이름.github.io/todo-app/에서 프로젝트 확인 가능!
오늘은 자바스크립트를 활용한 미니 프로젝트(할 일 목록 앱)을 만들었어요!
✅ HTML, CSS, 자바스크립트를 활용한 실전 프로젝트 완성
✅ localStorage를 이용해 데이터를 저장하고 불러오는 기능 구현
✅ GitHub Pages를 활용하여 프로젝트를 무료로 배포
자바스크립트를 배우면서 가장 중요한 것은 직접 프로젝트를 만들어 보는 것이에요!
앞으로도 더 많은 프로젝트를 만들어보면서 실력을 쌓아보세요. 🚀
'코드 정리 > Javascript' 카테고리의 다른 글
자바스크립트 정규식과 유효성 검사: 핵심 개념 정리 (0) | 2025.03.19 |
---|---|
자바스크립트 배열 중복 제거 방법 정리 (0) | 2025.03.18 |
[자바스크립트 14일 완전정복] 13일차 - 테스트와 디버깅 (0) | 2025.03.15 |
[자바스크립트 14일 완전정복] 12일차 - 객체 지향 프로그래밍(OOP) 기초 (0) | 2025.03.14 |
[자바스크립트 14일 완전정복] 11일차 - 모듈과 웹팩(Webpack) 기초 (0) | 2025.03.13 |