ํ๋ก์ ํธ ๊ธฐ๋ณธ ์ธํ
5. [ํ๋ก ํธ์๋] ๋ ์ด์์ & ๋ฉ๋ด ์ ์ฉ ๋ฐ ๋ผ์ฐํฐ ์์ฑ"
๋ ์ด์์ ์ ์ฉ & ๋ผ์ฐํฐ ์์ฑ
๋ ์ด์์ & ๋ฉ๋ด ์ ์ฉ
๋ ์ด์์์ vuetify์์ ์ ๊ณตํด ์ฃผ๋ Pre Made Layouts
์ค ํ๋๋ฅผ ์ฌ์ฉํ๋ค.
๋ฏธ๋ฆฌ ๋ง๋ค์ด์ง ๋ ์ด์์ ์ค Baseline
๋ ์ด์์์ ์ฌ์ฉํ๋ค.
Baseline์ ์ฝ๋ ํฌ์ ์๋ html๊ณผ js ์ฝ๋๋ฅผ App.vue
ํ์ผ๋ก ์ฎ๊ฒจ์ค๋ค.
<v-list-item link router :to="{ name: 'home' }">
<v-list-item-action>
<v-icon>mdi-home</v-icon>
</v-list-item-action>
<v-list-item-content>
<v-list-item-title>Home</v-list-item-title>
</v-list-item-content>
</v-list-item>
์์ ๊ฐ์ ๋ฐฉ์์ผ๋ก v-list ํ๋จ์ ๋ฉ๋ด๋ค๋ ์ถ๊ฐํด ์ค๋ค.
ํ์ฌ๋ ํ, ๋ก๊ทธ์ธ, ๋ก๊ทธ์์, ํ๋กํ ๋ฉ๋ด๋ฅผ ๋ง๋ค์๋ค.
<script>
import { mapState, mapMutations } from "vuex"
export default {
name: "App",
data: () => ({
drawer: null
}),
computed: {
...mapState(["isLogin", "userInfo"])
},
methods: {
...mapMutations(["logout"])
}
}
</script>
์ธ์ฆ ํ์ธ ๊ธฐ๋ฅ์ vuex๋ก ๊ตฌํํ ๊ฒ์ด๋ฏ๋ก ๋ฏธ๋ฆฌ ์ถ๊ฐํด ์ค๋ค.
์ ์ฉ๋ ํ๋ฉด
app-bar์ footer์ ์ํ๋ ํ์ดํ ๋ฐ ์ค๋ช
์ ์ ์ด์ฃผ๊ณ indigo ์์์ ์ ์ฉ์์ผฐ๋ค.
๋ผ์ฐํฐ ์์ฑ
import Vue from "vue"
import VueRouter from "vue-router"
import store from "@/store"
Vue.use(VueRouter)
const rejectAuthUser = (to, from, next) => {
if (store.state.isLogin === true) {
alert("์ด๋ฏธ ๋ก๊ทธ์ธ ํ์์ต๋๋ค.")
next("/")
} else {
next()
}
}
// const onlyAuthUser = (to, from, next) => {
// if (store.state.isLogin === false) {
// alert("๋ก๊ทธ์ธ์ด ํ์ํฉ๋๋ค.")
// next("/login")
// } else {
// next()
// }
// }
const routes = [
{
path: "/home",
name: "home",
component: () => import(/* webpackChunkName: "home" */ "../views/Home.vue")
},
{
path: "/login",
name: "login",
beforeEnter: rejectAuthUser,
component: () =>
import(/* webpackChunkName: "login" */ "../views/Login.vue")
},
{
path: "/register",
name: "register",
beforeEnter: rejectAuthUser,
component: () =>
import(/* webpackChunkName: "register" */ "../views/Register.vue")
}
]
const router = new VueRouter({
mode: "history",
base: process.env.BASE_URL,
routes
})
export default router
src ํ์์ router๋ผ๋ ํด๋๋ฅผ ๋ง๋ค๊ณ ๋ค์๊ณผ ๊ฐ์ index.js ํ์ผ์ ์์ฑํ๋ค.
๊ทธ ๋ค main.js์๋ router๋ฅผ ๋ฑ๋กํด ์ค๋ค.
const rejectAuthUser = (to, from, next) => {
if (store.state.isLogin === true) {
alert("์ด๋ฏธ ๋ก๊ทธ์ธ ํ์์ต๋๋ค.")
next("/")
} else {
next()
}
}
const onlyAuthUser = (to, from, next) => {
if (store.state.isLogin === false) {
alert("๋ก๊ทธ์ธ์ด ํ์ํฉ๋๋ค.")
next("/login")
} else {
next()
}
}
๊ณ์ ์ด ์ธ์ฆ๋์๋์ง ์๋์๋์ง ํ์ธ์ ํ๊ณ ํํฐ๋ง์ ํด์ฃผ๊ธฐ ์ํ ์ฝ๋์ด๋ค.
axios ์ค์น
api์์ ํต์ ์ axios๋ฅผ ์ด์ฉํ ๊ฒ์ด๋ฏ๋ก ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ์ฌ axios๋ฅผ ์ค์นํด ์ค๋ค.
$ npm install axios
axios๋ main.js์ ๋ฑ๋ก๋์ด ์์ด์ผ ์ฌ์ฉ ๊ฐ๋ฅํ๋ค.
axios.defaults.baseURL = "http://localhost:5000/api"
๋ถํ์ํ ํ์ผ ์ญ์
logo.png, logo.svg ๋ฑ์ vuetify๋ vue.js์ ๊ธฐ๋ณธ ์ด๋ฏธ์ง ํ์ผ,
HelloWorld.vue์ ๊ฐ์ ์ฌ์ฉํ์ง ์์ ์ปดํฌ๋ํธ ํ์ผ๋ค๋ ๋ค ์ญ์ ํด ์ค๋ค.