Vue Admin 템플릿 사용 가이드

Vue Admin 템플릿 사용 가이드

1. 프로젝트 디렉토리 구조 및 소개

vue-admin-template/
├── public/                  # 정적 자원 폴더
│   ├── favicon.ico          # 사이트 아이콘
│   └── index.html           # 메인 페이지 템플릿
├── src/                     # 소스 코드 폴더
│   ├── assets/              # 프로젝트 자원 파일 (이미지, 스타일 등)
│   ├── components/          # 공통 컴포넌트
│   ├── layouts/             # 레이아웃 컴포넌트
│   ├── router/              # 라우터 설정
│   ├── store/               # Vuex 상태 관리
│   ├── styles/              # 전역 스타일
│   ├── utils/               # 유틸리티 함수
│   ├── views/               # 페이지 컴포넌트
│   ├── App.vue              # 루트 컴포넌트
│   ├── main.js              # 진입 파일
│   └── permission.js        # 권한 제어
├── .env                     # 환경 변수 설정
├── .env.development         # 개발 환경 변수 설정
├── .env.production          # 프로덕션 환경 변수 설정
├── .eslintrc.js             # ESLint 설정
├── .gitignore               # Git 무시 파일 설정
├── babel.config.js          # Babel 설정
├── package.json             # 프로젝트 의존성 및 스크립트
├── README.md                # 프로젝트 설명 문서
└── vue.config.js            # Vue CLI 설정

2. 프로젝트 시작 파일 소개

main.js

main.js는 프로젝트의 진입 파일로, Vue 인스턴스를 초기화하고 DOM에 마운트하는 역할을 합니다. 아래는 main.js의 주요 내용입니다:

import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
import './permission'

Vue.config.productionTip = false

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

permission.js

permission.js는 권한 제어를 담당하며, 주로 라우트 가드와 권한 검증에 사용됩니다. 아래는 permission.js의 주요 내용입니다:

import router from './router'
import store from './store'
import { getAuthToken } from '@/utils/auth'

const allowedRoutes = ['/login', '/auth-redirect']

router.beforeEach(async(to, from, next) => {
  const hasToken = getAuthToken()

  if (hasToken) {
    if (to.path === '/login') {
      next({ path: '/' })
    } else {
      const userRoles = store.getters.roles && store.getters.roles.length > 0
      if (userRoles) {
        next()
      } else {
        try {
          const { roles } = await store.dispatch('user/fetchUserInfo')
          const accessibleRoutes = await store.dispatch('permission/buildRoutes', roles)
          router.addRoutes(accessibleRoutes)
          next({ ...to, replace: true })
        } catch (error) {
          await store.dispatch('user/clearToken')
          next(`/login?redirect=${to.path}`)
        }
      }
    }
  } else {
    if (allowedRoutes.includes(to.path)) {
      next()
    } else {
      next(`/login?redirect=${to.path}`)
    }
  }
})

3. 프로젝트 설정 파일 소개

vue.config.js

vue.config.js는 Vue CLI의 설정 파일로, 빌드 설정을 커스터마이징하는 데 사용됩니다. 아래는 vue.config.js의 주요 내용입니다:

module.exports = {
  publicPath: '/',
  outputDir: 'dist',
  assetsDir: 'static',
  lintOnSave: process.env.NODE_ENV === 'development',
  productionSourceMap: false,
  devServer: {
    port: 9528,
    open: true,
    overlay: {
      warnings: false,
      errors: true
    }
  },
  configureWebpack: {
    resolve: {
      alias: {
        '@': require.resolve('src')
      }
    }
  }
}

.env

.env 파일은 전역 환경 변수를 정의하는 데 사용됩니다. 개발 및 프로덕션 환경별로 별도의 설정 파일을 생성하여 관리할 수 있습니다.

태그: Vue.js 관리자 템플릿 프론트엔드 튜토리얼

6월 12일 22:04에 게시됨