vue-router 实现跳转的方式
1、说一下vue中所有带$的方法
{{msg}}
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. 不带参数
//name,path都行, 建议用name
//2.带参数
// 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)优化
实现方法简易
试用范围
高要求的体验度、追求界面流畅的应用
适用于追求高度支持搜索引擎的应用
开发成本
较高,常需借助专业的框架
较低 ,但页面重复代码多
维护成本
相对容易
相对复杂