Javascript/2022
Vue.js + Express로 Memo 앱만들기(2)
channnnii
2022. 11. 8. 09:51
1. front / views에 vue 파일 만들기
GroundView.vue 파일을 기본으로
안에 다른 vue 파일들을 import 할 예정!!
GrandView.vue 파일 작성하기
<template>
<div class="ground">
<HeaderView></HeaderView>
<MemoView></MemoView>
<FooterView></FooterView>
</div>
</template>
<script>
import HeaderView from "./HeaderView.vue";
import MemoView from "./MemoView.vue";
import FooterView from "./FooterView.vue";
export default {
components: { HeaderView, MemoView, FooterView },
};
</script>
HeaderView.vue 파일 작성하기
<template>
<header>Memo app</header>
</template>
<style scoped>
header {
text-align: center;
padding: 25px;
border-bottom: 1px solid #eee;
background-color: #f7f7f7;
}
</style>
FooterView.vue 파일 작성하기
<template>
<div class="footer">© Memo App. All rights reserved.</div>
</template>
<style>
.footer {
background-color: #f7f7f7;
border-top: 1px solid #eee;
padding: 25px;
}
</style>
MemoView.vue 파일 작성하기
<template>
<div class="memo">
<div class="act">
<button class="btn btn-primary">+ 추가</button>
</div>
<ul>
<li>메모 내용 1</li>
<li>메모 내용 2</li>
<li>메모 내용 3</li>
</ul>
</div>
</template>
<style lang="scss" scoped>
.memo {
.act {
padding: 10px 10px 5px 5px;
text-align: right;
}
ul {
border: 1px solid #eee;
list-style: none;
padding: 0px;
margin: 0px;
li {
padding: 5px 10px;
margin: 5px;
}
}
}
</style>
다음과 같은 화면이 완성되게 됩니다.
MemoView.vue 파일 수정하기(1)
<template>
<div class="memo">
<div class="act">
<button class="btn btn-primary" @click="add()">+ 추가</button>
</div>
<ul>
<li v-for="(d, idx) in data" :key="idx">{{ d }}</li>
</ul>
</div>
</template>
<script>
import { reactive } from "vue";
export default {
setup() {
const data = ["메모 1 내용", "메모 2 내용", "메모 3 내용"];
const add = () => {
state.data.push("추가된 메모 내용");
};
return { data, add };
},
};
</script>
<style lang="scss" scoped>
.memo {
.act {
padding: 10px 10px 5px 5px;
text-align: right;
}
ul {
border: 1px solid #eee;
list-style: none;
padding: 0px;
margin: 0px;
li {
padding: 5px 10px;
margin: 5px;
}
}
}
</style>
버튼이 먹히도록,
MemoView.vue 파일 수정하기(2)
<template>
<div class="memo">
<div class="act">
<button class="btn btn-primary" @click="add()">+ 추가</button>
</div>
<ul>
<li v-for="(d, idx) in state.data" :key="idx">{{ d }}</li>
</ul>
</div>
</template>
<script>
import { reactive } from "vue";
export default {
setup() {
const state = reactive({
data: ["메모 1 내용", "메모 2 내용", "메모 3 내용"],
});
const add = () => {
state.data.push("추가된 메모 내용");
};
return { state, add };
},
};
</script>
<style lang="scss" scoped>
.memo {
.act {
padding: 10px 10px 5px 5px;
text-align: right;
}
ul {
border: 1px solid #eee;
list-style: none;
padding: 0px;
margin: 0px;
li {
padding: 5px 10px;
margin: 5px;
}
}
}
</style>
다음과 같은 결과창이 나온다면,
아주 잘따라온 것 입니다!!