CSR(Client Side Rendering)
[Vue.js] 인프런 캡틴 판교님의 Todo 샘플 정리
헤르메스의날개
2022. 8. 1. 00:09
728x90
아래의 내용은 인프런의 캡틴판교님의 강의를 정리한 내용입니다.
제 소스도 아니고, 무언가를 배우기 위해서는 직접 keyin 하는 방법이 좋기 때문에,
중요 소스는 죄송하지만 이미지 입니다.
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>vue-todo</title>
<!-- 반응형 웹 디자인을 위한 Meta Tag (일반적인 모바일 최적화 코드) -->
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="shortcut icon" href="src/assets/favicon.ico" type="image/x-icon">
<link rel="icon" href="src/assets/favicon.ico" type="image/x-icon">
<script defer src="https://use.fontawesome.com/releases/v6.1.1/js/all.js"
integrity="sha384-xBXmu0dk1bEoiwd71wOonQLyH+VpgR1XcDH3rtxrLww5ajNTuMvBdL5SOiFZnNdp" crossorigin="anonymous"></script>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Ubuntu">
</head>
<body>
<div id="app"></div>
<script src="/dist/build.js"></script>
</body>
</html>
main.js
import Vue from 'vue'
import App from './App.vue'
new Vue({
el: '#app',
render: h => h(App)
})
App.vue
<template>
<div id="app">
<TodoHeader></TodoHeader>
<TodoInput></TodoInput>
<TodoList></TodoList>
<TodoFooter></TodoFooter>
</div>
</template>
<script>
import TodoHeader from './components/TodoHeader.vue';
import TodoInput from './components/TodoInput.vue';
import TodoList from './components/TodoList.vue';
import TodoFooter from './components/TodoFooter.vue';
export default {
components : {
'TodoHeader': TodoHeader,
'TodoInput': TodoInput,
'TodoList': TodoList,
'TodoFooter': TodoFooter,
}
}
</script>
<style>
body {
text-align: center;
background-color: #f6f6f6;
}
input {
border-style: groove;
width: 200px;
}
button {
border-style: groove;
}
.shadow {
box-shadow: 5px 10px 10px rgba(0, 0, 0, 0.03);
}
</style>
TodoHeader.vue
<template>
<header>
<h1>TODO it!</h1>
</header>
</template>
<script>
export default {
}
</script>
<style scoped>
h1 {
color: #2f3b52;
font-weight: 900;
margin: 2.5rem 0 1.5rem;
}
</style>
TodoInput.vue
TodoList.vue
TodoFooter.vue
로직적인 내용 중 저장하는 부분이 중요하다고 생각해서 남겨봅니다.
// localStorage 특성상
// TodoInput.vue에서
// Object -> json 문자열로 저장하고..
localStorage.setItem(this.newTodoItem, JSON.stringify(obj));
// TodoList.vue 에서
// json 문자열 -> Object로 변경해서
this.todoItems.push(JSON.parse(localStorage.getItem(localStorage.key(i))));
728x90