vue-router 实现跳转的方式

Posted shuijingcao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vue-router 实现跳转的方式相关的知识,希望对你有一定的参考价值。

1、说一下vue中所有带$的方法

<div id="example">
    <p ref="myp">{{msg}}</p>
    <div ref="warp">
       <div v-for="a in arr" ref="mydiv">a</div>
</div> </div>
let vm = new Vue({
        el:‘#example‘,
        
        data:{msg:‘hello‘,arr:[1,2,3]},
        mounted(){
            this.$nextTick(()=>{
                console.log(vm);
            })

console.log(this.$refs.myp)//无论有多少个只能拿到一个

 console.log(this.$refs.mydiv)//可以拿到一个数组

this.arr=[1,2,3,4]
  console.log(this.$refs.wrap)
debugger //这里debugger的话只能看到warp打印出来的是有3个,因为dom渲染是异步的。所以如果数据变化后想获取真实的数据的话需要等页面渲染
完毕后在获取,就用$nextTick
} })
vm.$watch(‘msg‘, function (newValue, oldValue) {  // 这个回调将在 `vm.msg` 改变后调用 })

//this.$data: vm上的数据

//this.$el:当前el元素

//this.$nextTick :异步方法,等待渲染dom完成后来获取vm

 //this.$watch:监控

//this.$set:后加的属性实现响应式变化

//this.$refs:被用来给元素或子组件注册引用信息。引用信息将会注册在父组件的 $refs 对象上。如果在普通的 DOM 元素上使用,引用指向的就是 DOM 元素;如果用在子组件上,引用就指向组件实例

 

2、vue-router 除了router-link 怎么实现跳转?

     1) router-link 实现方式

//1. 不带参数
 
<router-link :to="{name:‘home‘}"> 
<router-link :to="{path:‘/home‘}"> //name,path都行, 建议用name

//2.带参数

<router-link :to="{name:‘home‘, params: {id:1}}">


// params传参数 (类似post)
// 路由配置 path: "/home/:id" 或者 path: "/home:id"
// 不配置path ,第一次可请求,刷新页面id会消失
// 配置path,刷新页面id会保留

// html 取参 $route.params.id
// script 取参 this.$route.params.id

    2)  this.$router.push() (函数里面调用) 

1.  不带参数
 
this.$router.push(‘/home‘)
this.$router.push({name:‘home‘})
this.$router.push({path:‘/home‘})
 
 
 
2. query传参 
 
this.$router.push({name:‘home‘,query: {id:‘1‘}})
this.$router.push({path:‘/home‘,query: {id:‘1‘}})
 
// html 取参  $route.query.id
// script 取参  this.$route.query.id
 
 
 
3. params传参
 
this.$router.push({name:‘home‘,params: {id:‘1‘}})  // 只能用 name
 
// 路由配置 path: "/home/:id" 或者 path: "/home:id" ,
// 不配置path ,第一次可请求,刷新页面id会消失
// 配置path,刷新页面id会保留
 
// html 取参  $route.params.id
// script 取参  this.$route.params.id
 
 
 
4. query和params区别
query类似 get, 跳转之后页面 url后面会拼接参数,类似?id=1, 非重要性的可以这样传, 密码之类还是用params刷新页面id还在
 
params类似 post, 跳转之后页面 url后面不会拼接参数 , 但是刷新页面id 会消失

    3) this.$router.replace() (用法同上,push)

在vue.js中想要跳转到不同的 URL,需要使用 router.push 方法。这个方法会向 history 栈添加一个新的记录,当用户点击浏览器后退按钮时,则回到之前的 URL。

设置 replace 属性(默认值: false)的话,当点击时,会调用 router.replace() 而不是 router.push(),于是导航后不会留下 history 记录。即使点击返回按钮也不会回到这个页面。


     4)   this.$router.go(n) ()

this.$router.go(n)
向前或者向后跳转n个页面,n可为正整数或负整数

3、介绍单页应用和多页应用?

单页面应用(SinglePage Web Application,SPA)

只有一张Web页面的应用,是一种从Web服务器加载的富客户端,单页面跳转仅刷新局部资源 ,公共资源(js、css等)仅需加载一次,常用于PC端官网、购物等网站

如图:

 

技术图片

 

多页面应用(MultiPage Application,MPA)

多页面跳转刷新所有资源,每个公共资源(js、css等)需选择性重新加载,常用于 app 或 客户端等

如图:

 

技术图片

具体对比分析:

 单页面应用(SinglePage Web Application,SPA)多页面应用(MultiPage Application,MPA)
组成 一个外壳页面和多个页面片段组成 多个完整页面构成
资源共用(css,js) 共用,只需在外壳部分加载 不共用,每个页面都需要加载
刷新方式 页面局部刷新或更改 整页刷新
url 模式 a.com/#/pageone
a.com/#/pagetwo
a.com/pageone.html
a.com/pagetwo.html
用户体验 页面片段间的切换快,用户体验良好 页面切换加载缓慢,流畅度不够,用户体验比较差
转场动画 容易实现 无法实现
数据传递 容易 依赖 url传参、或者cookie 、localStorage等
搜索引擎优化(SEO) 需要单独方案、实现较为困难、不利于SEO检索 可利用服务器端渲染(SSR)优化 实现方法简易
试用范围 高要求的体验度、追求界面流畅的应用 适用于追求高度支持搜索引擎的应用
开发成本 较高,常需借助专业的框架 较低 ,但页面重复代码多
维护成本 相对容易 相对复杂
 

 

 

以上是关于vue-router 实现跳转的方式的主要内容,如果未能解决你的问题,请参考以下文章

Vue-Router来实现组件间跳转的三种方法

Vue中实现路由跳转的三种方式详细分解

vue-router路由跳转原理

vue-router

vue中实现路由跳转的三种方式(超详细整理)

解决vue-router路由跳转的问题 message: "Navigating to current location ("/homePage") is not all