首页 > 其他分享 >Vue2路由

Vue2路由

时间:2022-10-08 15:03:20浏览次数:43  
标签:next query Vue2 path 组件 router 路由

路由

前端路由:不同的网址对应各自的页面
vue的前端路由:SPA应用要做出路由效果,就得判断当前网址,然后切换组件
vue-router就是专门做切换组件的功能,它是一个单独的技术,依赖vue
就像jQuery和dom操作一样

路由引入

最好用官方提供的脚手架来选择下载(可以避免版本的冲突,出现不可预料的问题),用官方提供的脚手架会将基础的配置写好,直接使用即可。

如果不用官方的脚手架,需要自己创建路由文件

  1. 在main.js中引入下载下来的路由文件

    import VueRouter from 'vue-router' //引入路由工具
    
  2. 创建路由对象

    let router = new VueRouter({
      roters: [{
        path:'',
        component:()=>{}
      }]
    })
    
  3. 将路由对象挂载到页面中

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

路由传参

query传参

写js代码的方式

this.$router.push({path:'/home',query:{name:'djia'}})

在网址中写query,用this.$router.query来获取传入的信息

除了写js代码的方式外,也可以使用<roouter-link>组件直接写

<router-link to="/home?name=djia"></router-link>
<router-link :to="{path:'/home',query:{name:'djia'}}"></router-link>
动态路由传参
  1. 注册路由,注意:后面是什么值,后面传入的便是什么,可以穿多个

    {
      path:'/info/:id/:count'
      component: ()=> import()
    }
    
  2. 传值

    <router-link to="/neirong/234/titlesfjado">routerlink动态传参数</router-link>
    

    js方式

    this.$router.push({path:'/neirong',params: {
      id:345,
      title:'adjsaoif'
    }})
    //1. 注意:如果提供了 path,params 会被忽略,上述例子中的 query 并不属于这种情况。取而代之的是下面例子的做法,你需要提供路由的 name 或手写完整的带有参数的 path
    
    

路由守卫

路由守卫也可以看作是特定时候运行的钩子函数

全局守卫

全局前置钩子router.beforeEach(fn),导航被触发----一般登录验证
全局解析钩子router.beforeResolve(fn),组件初始化
全局后置钩子router.afterEach(fn),没有next,导航被确认,一般路由跳转以后用window把窗口调上去

// 全局首位 组件被触发的时候执行
router.beforeEach((to,from,next)=> {
  // 写逻辑 注意不要写成了死循环
  if(to.path=='/info') {
    // this是undefiend
    // console.log(this)
    // next('/login')
    // let islogin = window.localStorage.getItem('islogin')
    next()
  }else {
    next()
  }
})

// 组件初始化
router.beforeResolve((to,from,next)=> {
  next()
})
// 组件初始化之后 没有next,一般路由跳转以后window把窗口调上去
router.afterEach((to,from)=> {
  window.scrollTo(0,0)
})

注意:守卫里面的this是undefined

路由独特守卫

单独守卫某一个组件

routes:[{
    path:"/test",
    component:()=>import("../components/Test.vue"),
    beforeEnter(to,from,next){
        if(to.path==="/test"){
          alert("请登录");
          next(false); // 禁止跳转
        }else{
          next()
        }
 	}
}]

动态添加路由

this.$router.addRoute({
  path: '/info',//添加的路由名称
  component: ()=>import('') //引入组件的
})

标签:next,query,Vue2,path,组件,router,路由
From: https://www.cnblogs.com/shuilifang/p/16768926.html

相关文章

  • Vue2组件
    组件创建组件的定义:实现应用中局部功能代码和资源的集合定义组件Vue.extend(option)option:和nnewVue(option)里的option几乎一致,但有点区别el不写原因:最终所有......
  • 【Vue2】一文弄懂前端路由
    一、对路由的理解1.什么是路由路由其实就是一组键值对or映射关系,在一个路由中应包含最基本的路径和组件信息。示例如下:上面展示的是一个路由组,即用"[]"将一组路由写在一......
  • vue2双向绑定原理:深入响应式原理defineProperty、watcher、get、set
    响应式是什么?Vue最独特的特性之一~就是我们在页面开发时,修改data值的时候,数据、视图页面需要变化的地方变化。主要使用到哪些方法?用 Object.defineProperty给watcher对......
  • Vue2.0使用elementUI
    引入elementUI第一种:全部引入安装elementuinpminstallelement-ui--save1.在main.js中引入2.使用//引入element-uiimportelementUIfrom'element-ui';//引入......
  • react路由
    -react路由其实是借助BOM中的History对象实现的,专门有一个history.js的库,可以让操作history对象简单起来。用history.js可以通过两种方式创建路由对象:1、History.create......
  • (一)从路由器和IP地址开始折腾
    我们应当知道的一点是,由于IP地址只有32bit,所以很快就面临着不够用的情况,现在之所以大家还在正常使用IPv4,就是因为采用了公有地址和私有地址的概念:所谓的私有地址是从当......
  • 路由高级特性-路由递归、等价路由
    一、路由递归先来看一个简单的示例在如图示拓扑中,RTA需要访问30.1.2.0/24网段,如果在RTA中配置静态路由iproute-static30.1.2.0255.255.255.020.1.1.2但注意观察,在路由表......
  • 路由高级特性-浮动路由原理与配置
    在如下拓扑图中,RTA访问PC1,可以通过两条路径:RTA→RTB→PC1;RTA→RTC→RTB→PC1。默认使用RTA→RTB→PC1访问路径,但假设RTA→RTB→PC1路径终端,那如何才能切换到RTA→RTC→RTB......
  • 改造vue-webtopo-svgeditor2.1版本,兼容vue2
    原控件在 https://github.com/yaolunmao/vue-webtopo-svgeditor 是园子里的朋友 咬轮猫  开发的在网上发现大神开发这套组态,很符合项目要求,10.1期间准备融入项目,结......
  • #yyds干货盘点#讲讲前端路由的原理
    什么是前端路由前端的路由可以理解成:用来描述url(web页面的地址)与UI(用户界面)之间的映射关系,就是当url发生变化,那么UI也会发生变化,那么这种映射关系就叫前端的路由。......