vue实战之vue后台管理系统(一)

本文主要介绍了

  • 项目的来源
  • 几个主要的代码部分的分析(main.js、routes.js、App.vue)
    在网上很少找到关于一个较完全的vue项目的开发文档(即如何一步步的搭建一个vue项目)

项目来源

这个项目是我自己从Git上面找到的一个项目,并不是我整的,毕竟我只是一个菜鸡,但是,这个只是为了方便我自己回顾项目整的。
项目网址 https://github.com/taylorchen709/vue-admin
很棒棒的一个作者。

vue的安装配置等等等

此处省略,自行百度。

代码分析

代码目录结构

  • build - webpack config files
  • config - webpack config files
  • dist - build
  • src -your app
    • api
    • assets
    • common
    • components - your vue components
    • mock
    • styles
    • views - your pages
    • vuex
    • App.vue
  • main.js - main file
  • routes.js
  • static - static assets

index.html就不分析了;

main.js 入口文件(可以设置)

import babelpolyfill from 'babel-polyfill'
import Vue from 'vue'
import App from './App'
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-default/index.css'
//import './assets/theme/theme-green/index.css'
import VueRouter from 'vue-router'
import store from './vuex/store'
import Vuex from 'vuex'
//import NProgress from 'nprogress'
//import 'nprogress/nprogress.css'
import routes from './routes'
import Mock from './mock'
Mock.bootstrap();
import 'font-awesome/css/font-awesome.min.css'

import 用来引入需要的插件以及相关的样式

Vue.use(ElementUI)
Vue.use(VueRouter)
Vue.use(Vuex)

vue在使用其他的组件的时候,需要用到Vue.use(),这是因为这些组件中有install方法,而axios不需要通过Vue.use()使用。
参考网址:https://www.jianshu.com/p/89a05706917a
↑↑↑ 讲解还是不够深刻

vue-router的基本使用: https://www.cnblogs.com/SamWeb/p/6610733.html

const router = new VueRouter({
  routes     //相当于routes:routes
})

在相同目录下新建一个routes.js,用于存放多个路由routes的配置。如果在路由不多的情况下可以在main.js配置routes即可。
在这个地方routes.js应该是哪里配置过,就像main.js是入口文件一样,routes.js是专门用来配置routes的,实属个人猜测,之后有机会求证一下。

import Login from './views/Login.vue'
import NotFound from './views/404.vue'
import Home from './views/Home.vue'
import Main from './views/Main.vue'
import Table from './views/nav1/Table.vue'
import Form from './views/nav1/Form.vue'
import user from './views/nav1/user.vue'
import Page4 from './views/nav2/Page4.vue'
import Page5 from './views/nav2/Page5.vue'
import Page6 from './views/nav3/Page6.vue'
import echarts from './views/charts/echarts.vue'

let routes = [
    {
        path: '/login',
        component: Login,
        name: '',
        hidden: true
    },
    {
        path: '/404',
        component: NotFound,
        name: '',
        hidden: true
    },
    //{ path: '/main', component: Main },
    {
        path: '/',
        component: Home,
        name: '导航一',
        iconCls: 'el-icon-message',//图标样式class
        children: [
            { path: '/main', component: Main, name: '主页', hidden: true },
            { path: '/table', component: Table, name: 'Table' },
            { path: '/form', component: Form, name: 'Form' },
            { path: '/user', component: user, name: '列表' },
        ]
    },
    {
        path: '/',
        component: Home,
        name: '导航二',
        iconCls: 'fa fa-id-card-o',
        children: [
            { path: '/page4', component: Page4, name: '页面4' },
            { path: '/page5', component: Page5, name: '页面5' }
        ]
    },
    {
        path: '/',
        component: Home,
        name: '',
        iconCls: 'fa fa-address-card',
        leaf: true,//只有一个节点
        children: [
            { path: '/page6', component: Page6, name: '导航三' }
        ]
    },
    {
        path: '/',
        component: Home,
        name: 'Charts',
        iconCls: 'fa fa-bar-chart',
        children: [
            { path: '/echarts', component: echarts, name: 'echarts' }
        ]
    },
    {
        path: '*',
        hidden: true,
        redirect: { path: '/404' }
    }
];

export default routes;

routes组件中的参数说明:
vue官网的路由器说明:https://router.vuejs.org/guide/#html
path 对应路由的跳转路径(动态路由,可以控制动态路径)
component 该路径映射的组件
name 给路由设置名称(命名路由)
children 某个路由的子路由,可以跟路由一样配置参数(嵌套路由)
hidden:true; //并没有找到这个是什么意思的,但是注释掉我的侧变量就是多了三个没有名字的标签。

router.beforeEach((to, from, next) => {
  //NProgress.start();
  if (to.path == '/login') {
    sessionStorage.removeItem('user');
  }
  let user = JSON.parse(sessionStorage.getItem('user'));
  if (!user && to.path != '/login') {
    next({ path: '/login' })
  } else {
    next()
  }
})

官网导航守卫部分知识: https://router.vuejs.org/zh/guide/advanced/navigation-guards.html#全局守卫
router.beforeEach是导航守卫中的全局前置守卫。

每个守卫方法接收三个参数:

  • to: Route: 即将要进入的目标 路由对象
  • from: Route: 当前导航正要离开的路由
  • next: Function: 一定要调用该方法来 resolve 这个钩子。执行效果依赖 next 方法的调用参数。
new Vue({
  //el: '#app',
  //template: '<App/>',
  router,
  store,
  //components: { App }
  render: h => h(App)
}).$mount('#app')

new vue 中的参数说明: https://www.jianshu.com/p/cf2611ed1b1f
$mout('#app')el:'#app'用法类似,但也有一些差别。

  • 6
    点赞
  • 76
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值