Vue.js 로그인 및 게시판 만들기(2)

업데이트:

화면 구성

화면은 아래와같이 구성 될 것이며, 라우터를 통해 각 화면(컴퍼넌트) 간에 관계를 연결 해야됨.

  • 로그인 화면
  • 회원가입 화면
  • 게시판 메인화면
  • 게시판 추가/수정/삭제 화면

라우터(Router)설치 및 조정

  • 라우터(Router) : Vue에서 화면간 이동을 지원하는 공식 라이브러리를 말함
 <router-link to="URL값"> : 페이지 이동 태그, 화면에선 <a> 태그로 치환됨  
 <router-view> : 페이지 표시 태그 , 변경된 URL에 따라 해당 컴포넌트를 뿌려주는 영역
  • npm i vue-router를 이용하여 라우터를 vue.js 프로젝트에 설지
  • /src/folder에 routes 폴터 생성 후 index.js 작성하여 라우터를 별도로 관리해줌
// /home/vue/vue-endgame/vue-til/src/folder/routes/index.js
import Vue from 'vue';
import VueRouter from 'vue-router';
import LoginPage from  '@/views/LoginPage.vue';
import SignupPage from '@/views/SignupPage.vue';

Vue.use(VueRouter);

export default new VueRouter({
    routes: [
        {
            path: '/login',
            component: LoginPage,
        },
        {
            path: '/signup',
            component: SignupPage,
        }
    ],
});

  • main.js에 router 설정 필요
import Vue from "vue";
import App from "./App.vue";
import router from '@/routes/index.js';

Vue.config.productionTip = false;

new Vue({
  render: h => h(App),
  router,
}).$mount("#app");

Code Splitting 없는 페이지 라우터 처리 (History)

  • Code Splitting: Javascript File을 필요할때 마다 그때그때 불러오는 것을 말함 (Dynamic import 기능)
  • Code Splitting을 쓰는 이유: SPA형태의 웹사이트에서 가장 치명 적인 것은 초기 로딩 속도 이나, 코드 스플리팅을 사용해 사용자가 원하는 시점에 해당 파일을 로딩하여 초기 로딩 속도를 개선 해주는 방법

  • History: URL의 # 부분 없애줌, (단, 배포할 때, 서버마다 조정이 필요 vue공식사이트 참고)
  • 없는페이지 라우터처리 : *를 붙여 진행
import Vue from 'vue';
import VueRouter from 'vue-router';
//import LoginPage from '@/views/LoginPage.vue';
//import SignupPage from '@/views/SignupPage.vue';

Vue.use(VueRouter);

export default new VueRouter({
  mode: 'history',
  routes: [
    {
      path: '/',
      redirect: '/login',
    },
    {
      path: '/login',
      component: () => import('@/views/LoginPage.vue'), //Code Splitting
      //component: LoginPage,
    },
    {
      path: '/signup',
      component: () => import('@/views/SignupPage.vue'), //Code Splitting
      //component: SignupPage,
    },
    {
      path: '*',
      component: () => import('@/views/NotFoundPage.vue'), // Non Found Page 
    },
  ],
});

태그:

카테고리:

업데이트: