Vanilla JavaScript를 사용하여 TODO 앱 빌드
20555 단어 beginnerswebdevjavascripttutorial
이 자습서에서는 논리에
JavaScript
을 사용하고 스타일에 Bootstrap
을 사용하여 TODO 앱을 빌드합니다.앱을 사용해 보십시오
here
.다음 단계를 따릅니다.
부트스트랩으로 사용자 인터페이스(UI) 구축
Bootstrap's Starter Template
로 시작 form
를 만듭니다. hold all todos
에 대한 정렬되지 않은 목록을 만듭니다. list element
. responsive
JavaScript로 기능 처리
JSON (JavaScript Object Notation)
형식으로 표현하는 방식으로 데이터의 구조를 정의합니다. renderTodos
UI에 TODO를 표시하는 기능. renderTodo
개별 TODO를 렌더링하는 도우미 함수. addTodo
TODO를 추가하는 기능submitting
. completeTodo
TODO를 완료로 표시하는 기능UI 구축
부트스트랩starter template 복사 및 사용자 정의 스크립트 태그 추가
<!DOCTYPE html>
<html lang="en">
<head>
<!-- Required meta tags -->
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<!-- Bootstrap CSS -->
<link
href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css"
rel="stylesheet"
integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC"
crossorigin="anonymous"
/>
<title>TODO App</title>
</head>
<body>
<!-- CONTENT -->
<div></div>
<!-- custom JS -->
<script src="./script.js"></script>
<!-- Bootstrap JS -->
<script
src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js"
integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
crossorigin="anonymous"
></script>
</body>
</html>
사용자가 TODO 항목을 입력할 수 있도록 생성form
id
및 text field
에 고유한 form
를 지정합니다.<form id="todo-form">
<!-- input field -->
<input
id="todo-text"
class="form-control form-control-lg"
type="text"
placeholder="Your TODO"
required
/>
<!-- submit button -->
<input type="submit" class="btn btn-primary my-3 w-100" />
</form>
모든 할일을 담기 위해 정렬되지 않은 목록 만들기
<ul id="todo-list" class="list-unstyled"></ul>
todo 항목에 대해 checkbox을 사용하여 목록 요소를 만듭니다.
<li>
<div class="form-check">
<input class="form-check-input" type="checkbox" />
<label class="form-check-label" for="flexCheckDefault"> TODO Text </label>
</div>
</li>
부트스트랩을 사용하여 UI 반응형으로 만들기grid system
<div class="container">
<div class="row row-cols-1 row-cols-sm-1 row-cols-md-2">
<div class="col">
<!-- todo form goes here -->
</div>
<div class="col">
<!-- todo list goes here -->
</div>
</div>
</div>
JavaScript를 사용하여 기능 처리
todos
에 대해 array of objects을 생성하여 시작하겠습니다.var todos = [
{
id: 0,
text: "subscribe to KJSCE codecell",
complete: false,
},
{
id: 1,
text: "Star https://github.com/pettiboy/react-ui-scrollspy on GitHub",
complete: false,
},
];
DOM
에서 필요한 모든 요소를 선택합니다.const list = document.getElementById("todo-list");
const form = document.getElementById("todo-form");
const todoText = document.getElementById("todo-text");
이것들
todos
을 우리JS
에서 DOM으로 렌더링해봅시다./*
loops over each todo in todos and if the task is not completed yet
calls the renderTodo function to render it to the DOM
*/
function renderTodos() {
emptyTodos();
todos.forEach((todo) => {
if (todo.complete === false) {
renderTodo(todo);
}
});
}
/*
takes a todo object as input and appends the innerHTML
of the unordered list with that todo
*/
function renderTodo(todo) {
list.innerHTML += `
<li>
<div class="form-check">
<input onclick="completeTodo(${todo.id});" class="form-check-input" type="checkbox" />
<label class="form-check-label" for="flexCheckDefault">
${todo.text}
</label>
</div>
</li>
`;
}
주어진
todo
함수를 todos
라는 객체 배열에 추가하는 함수를 작성해 보겠습니다.function addTodo(todo) {
todos.push({
id: todo.id,
text: todo.text,
complete: todo.complete,
});
// render that todo to the DOM
renderTodo(todo);
}
todo 제출을 위한 설정
Event Listener
// listen for form to be submitted
form.addEventListener("submit", (e) => {
e.preventDefault();
addTodo({
id: todos.length + 1,
text: todoText.value,
complete: false,
});
// reset value of input field
todoText.value = "";
});
todo
를 completed
로 표시하는 함수를 작성해 보겠습니다.function completeTodo(removeId) {
// Find index of specific object using findIndex method.
todoIndex = todos.findIndex((todo) => todo.id == removeId);
// Update object's name property.
todos[todoIndex].complete = true;
// Just to wait for a sec before re rendering
setTimeout(function () {
saveTodosInMemory();
renderTodos();
}, 1000);
}
todos를
localStorage
에 저장합니다.// on page load - the following functions will run
todos = JSON.parse(localStorage.getItem("todosInMemory")) || [];
renderTodos();
이제 JavaScript를 사용하여 TODO 앱을 빌드할 수 있으므로
React
이라는 인기 있는 프레임워크를 사용하여 이 앱을 빌드하고 Vanilla JavaScript를 사용하여 코드 작성과 관련된 다양한 문제를 비교하고 해결하는 방법을 살펴보겠습니다.이 튜토리얼의 비디오 버전을 보려면 내가 KJSCE Codecell's Month Of MERN에서 제공한 것을 확인하십시오.
GitHub
에서 코드를 찾을 수도 있습니다.
Reference
이 문제에 관하여(Vanilla JavaScript를 사용하여 TODO 앱 빌드), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/pettiboy/build-a-todo-app-using-vanilla-javascript-3d5텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)