vue-router

路由的使用

index.js

//配置路由相关信息
import Vue from 'vue';
import Router from 'vue-router';
import Home from './ Home';
//1. 通过Vue.use(插件),安装插件
Vue.use(Router);   //该指令会默认执行 VueRouter.install下载路由插件

//2. 创建路由对象
const router = new Router({
  mode: 'history',  //**默认为hash模式,这里设置为history模式**
  linkActiveClass: 'active', //**给活跃路径添加样式**
  //  配置路由和组件之间的应用关系
  routes: [
   {
      path: '/', //**配置页面默认路径**
      name: 'dashboard',
      redirect: '/main'
    }, {
      path: '/home',
      component: Home
    }, {
      path: '/main',
      name: 'main',
      redirect: '/main/bomquery',
      component: main,
      children: [
         {
          path: 'bomquery',
          name: 'main.bomquery',
          component: () => import (
          '../views/components/bomQuery/bomQuery.vue'),  //**路由懒加载**
          meta: { //元数据
            keepAlive: true, // 需要被缓存
          }
        }, 
        {
          path: 'bomquery/bominfo/:id', //**动态路由**
          name: 'main.bomquery.bominfo',
          component: () => import (/* webpackChunkName: 'main' */
          '../views/components/bomQuery/bomInfoDetail.vue'),
          children: [ //**路由嵌套**
	        {
	          path: 'firm',
	          name: 'register.firm',
	          component: () =>
	            import(/* webpackChunkName: 'main' */
	            '../views/pages/login/register/firm/register.vue')
	        },
	        beforeEnter:(to, from, next) => { //组件内部独享守卫示例
			console.log(to,'000');
			next(); 
			}
	      ]
        },       
  ]
});
//

## **导航守卫**
//前置钩子(hook)
router.beforeEach((to, from, next) => {
//从from到to
console.log(to.meta.keepAlive);
next(); //必须执行,否则路由跳转失效
});
//后置钩子 ,全局守卫不需要主动调用next()函数
router.afterEach(() => {
  // 回到顶部
  window.scrollTo(0, 0);
});


//3. 将路由对象传入vue实例
export default router;

main.js使用路由

import Vue from 'vue';
import App from './App';
import router from './router';

export default new Vue({
  el: '#app',
  router,
  render: h => h(App),
});

App.Vue

<template>
  <div id="app">
  <router-link  to="/main' tag ="button" relplace active-class="active"></router-lin> //配置导航栏路由地址
   <router-view></router-view> //**渲染对应的组件内容**
 //  <keep-alive>   //<keep-alive>使组件处于活跃状态 路由跳转时不会被销毁
//      <router-view v-if="$route.meta.keepAlive">
         <!-- 这里是会被缓存的视图组件,比如 Home! -->
//      </router-view>
 //   </keep-alive>
//    <router-view v-if="!$route.meta.keepAlive">
        <!-- 这里是不被缓存的视图组件,比如 Edit! -->
//    </router-view>
  </div>
</template>
<script>
export default {
  name: 'App',
  }
</script>
.active{
  color:red
}
</script>

补充:

this. r o u t e r ∗ ∗ : 每 个 V u e 组 件 都 有 一 个 对 应 的 r o u t e r 对 象 ∗ ∗ t h i s . router** :每个Vue组件都有一个对应的router对象 **this. routerVuerouterthis.route :当前活跃的路由

router-link和router-view都是由Vue.component创建的全局组件。
actived(活跃时被调用)和deactived方法只有组件被keep-alive包裹时才会生效

//注意,不能随便加空格

include:字符串或正则表达式,匹配上的组件才能被缓存,匹配组件的name
exclude:排除在外字符串或正则表达式,匹配上的组件都不会被缓存,匹配组件的name

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值