nuxt使用elementui搭建项目(四):nuxt自定义路由

1.在根目录下新建router/index.js

// router/index.js
// 引入path
import path from 'path'

// 要使用 process.cwd()
const resolve = (pagePath) => path.resolve(process.cwd(), `./${pagePath}`)

export const $routes=[
  {
    path:'/',
    redirect:'/login'
  },
  {
    path:'/login',
    name:'Login',
    component: resolve('pages/User/Login/index')
  }
]
const extendRoutes =(routes)=>{
  routes.length =0;
  routes.push(...$routes)
}
export  default {
  base:'/shop',//基础路由
  extendRoutes
}

2。nuxt.config.js中配置

import router from './router'
export default{
    ...,
    router,
    ...
}

3.配置路由守卫,在plugins中新建router.js

import NProgress from 'nprogress';
import 'nprogress/nprogress.css';
NProgress.inc(0.2)
NProgress.configure({ easing: 'ease', speed: 500, showSpinner: false });

import Vue from 'vue';
import VueRouter from 'vue-router';
Vue.use(VueRouter)

//解决编程式路由往同一地址跳转时会报错的情况
const originalPush = VueRouter.prototype.push;
const originalReplace = VueRouter.prototype.replace;
//push
VueRouter.prototype.push = function push(location, onResolve, onReject) {
  if (onResolve || onReject)
    return originalPush.call(this, location, onResolve, onReject);
  return originalPush.call(this, location).catch(err => err);
};
//replace
VueRouter.prototype.replace = function push(location, onResolve, onReject) {
  if (onResolve || onReject)
    return originalReplace.call(this, location, onResolve, onReject);
  return originalReplace.call(this, location).catch(err => err);
};

export default ({app})=>{
  app.router.beforeEach((to,from,next)=>{
    NProgress.start();
    next()
  })
  app.router.afterEach((to,from)=>{
    NProgress.done();
  })
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值