首页 > 其他 > 详细

2.Vue技术栈开发实战-路由基础篇

时间:2020-05-18 00:36:54      阅读:78      评论:0      收藏:0      [点我收藏+]


技术分享图片
之前我们把路由拆成了下面两个文件。router.js里面配置路由列表,index.js里面我们创建路由实例。之后讲到高级篇路由守卫,也是在index.js内去添加。
技术分享图片
首先在index.js里面把vue-router和路由列表引进来。
技术分享图片
Router作为一个插件。需要使用Vue.use方法把它加载进来。
技术分享图片
接下来使用Router来创建一个路由实例
技术分享图片
创建路由实例的时候呢,属性要写我们的路由列表
技术分享图片
这是ES6的简写形式
技术分享图片
在App.vue里面这里默认有两个router-link
技术分享图片
有两个router-link组件,一个router-view
技术分享图片
route-link封装了一个a标签。也就是链接标签。to指定的是一个路径,
技术分享图片
router-view组件是你的视图渲染组件。通过router-link跳转的页面加载的组件都会在router-view里面去渲染。
技术分享图片
我们在浏览器中看到的效果就是这样的
技术分享图片
Home和About就是router-link的两个组件。点击可以跳转到不同的页面。
技术分享图片
技术分享图片

路由列表

路径对应的组件就是在我们的路由列表里。路由列表它是一个数组。
技术分享图片
里面包含了路由对象,一个基本的路由对象包含path和component.
path:指的是路径
components:路径对镜要渲染的组件。
技术分享图片
这里引入了一个Home组件。@符号指代的是src这个路径。
技术分享图片
@符号是我们上一节课在vue.config.js内配置的
技术分享图片
src下的views下的Home.vue
技术分享图片

第二个路由对象


技术分享图片

component的写法和上面的写法不一样。通过看注释可以知道,这样写起到一个懒加载的作用。只有当访问这个页面的时候,才会去加载views/about.vue这个组件。这样起到一个优化的作用。
技术分享图片
前面这个注释呢?在打包的时候起到 一个标注的作用。
技术分享图片
打包完的文件呢会以about.[hash].js文件的形式去打包。
技术分享图片
这里是个ES6的箭头函数,没有参数。返回一个import它是一个promise对象,加载About这个页面。
技术分享图片

高级用法-动态路由匹配

首先我们来创建一个路由对象。
name就是一个动态路由参数。
技术分享图片
我们去加载argu.vue这个文件
技术分享图片
创建argu.vue这个页面
技术分享图片

技术分享图片
标准的vue的页面的基本结构
技术分享图片
这里我们现实$route.params.name
技术分享图片

技术分享图片

技术分享图片
$.route代表的是当前路由对象。它里面包含一个params。里面包含一个name的值。
技术分享图片
name的值呢就是我们在路由列表里面配置的 动态路由参数。
技术分享图片

嵌套路由

技术分享图片

技术分享图片

技术分享图片
里面放一个router-view用来渲染路由视图。
技术分享图片
children属性是个数组里面包含嵌套在parent组件里面的 子级别的页面。
技术分享图片

技术分享图片
创建child.vue
技术分享图片


技术分享图片
技术分享图片

技术分享图片
看下页面的效果。没有加载成功。
技术分享图片

技术分享图片
只有parent前面需要写,后面的自路由会自动补上斜线。
技术分享图片

技术分享图片
 上面是在父组件内的,下面的是在父组件内的嵌套视图。
技术分享图片

命名路由

之前我们在这里删掉了name属性
技术分享图片
给他俩都加上name属性。给路由对象设置name属性就是给他命名。
技术分享图片
加上name属性后可以通过name值进行跳转。首先要给to传一个对象。

这是原来默认的写法
技术分享图片
使用v-bind绑定一个值,值写成一个对象的形式。
技术分享图片
v-bind可以简写直接用冒号。
技术分享图片

技术分享图片
技术分享图片

技术分享图片

小知识点

route-link有个开始和结束的标签
技术分享图片
因为中间它有东西。我们需要在在中间放一些东西。所以需要一个开标签和一个闭标签。
技术分享图片
如果我们中间不需要放东西呢,就可以写成这种单个标签的形式。不需要开闭标签,效果是一样的。
技术分享图片

命名视图

我们看到router-view它只有一个标签。
技术分享图片
如果我们想在同一个页面上显示多个视图。而且让每一个视图显示在指定的位置,就用到了命名视图。
技术分享图片

在路由里配置

带s代表你要加载多个组件。
技术分享图片

技术分享图片
没有命名的加载的就是default对应的组件
技术分享图片

技术分享图片
创建email.vue
技术分享图片
创建tel.vue
技术分享图片

技术分享图片
使用view的开发者工具
技术分享图片
这个地方我们加载了3个组件。分别对应了3个router-view
技术分享图片

重定向

帮我们当前要访问的url重定向到另一个url。例如访问main重定向到根目录也就是home页
技术分享图片

技术分享图片

技术分享图片
还可以通过命名路由的方式。name是home的路由。
技术分享图片
效果也是一样的
技术分享图片
还可以传入一个方法,函数。这里我们把to打印出来看一下。
技术分享图片

技术分享图片

技术分享图片
这里必须return一个路径对象,或者是一个字符串路径。
技术分享图片
比如我们可以返回一个name是home。这样它会跳转到home页,
技术分享图片

还可以返回一个路径
技术分享图片
效果也是一样的。
技术分享图片
技术分享图片
ES6里面,如果你直接是一个return的话。可以简写如下。
技术分享图片

别名 

访问一个路径的时候,可以给它定义一个别名
直接给首页设置一个别名为/home_page
技术分享图片

技术分享图片

重点-编程式的导航

通过js,编程的方式来控制页面跳转、返回,
技术分享图片
使用编程式的方式,需要用到路由实例,this.$router.
技术分享图片
它就是之前我们在main.js内注册的router路由实例。
技术分享图片
这个路由实例有很多的方法,比如我们要返回上一页,就用go参数是-1
技术分享图片
1就是前进页
技术分享图片
还可以用back()来后退
技术分享图片

先访问about
技术分享图片
然后回到Home页
技术分享图片
点击返回上一页就返回了about页
技术分享图片
还可以通过js方法跳转到一个指定的页面
我们把前面多余的删掉
技术分享图片
分别给他一个参数
技术分享图片

技术分享图片
简单的写法跳转到/parent
技术分享图片
技术分享图片

技术分享图片

技术分享图片

还可以使用命名路由的方式

技术分享图片
给parent个name的值
技术分享图片
点击跳转到parent
技术分享图片

技术分享图片

替换

技术分享图片
push和reaplce有什么区别呢?当我们使用push的时候,会在我们的浏览历史里面加入一个记录,那么你在回退的时候 就可以回退到这个页面,
如果用replace它就会把当前的浏览器历史,替换成parent这个页面。那么你之前再做回退操作 会回退到这个parent,
技术分享图片
现在访问的是home
技术分享图片

然后再访问about
技术分享图片
然后回到home。我们的上一个页面是about。点击替换到parent
技术分享图片

技术分享图片
然后点击后退的时候回到了about。而不是home
技术分享图片
在对象里面加入一些信息,。
技术分享图片
在首页点击跳转到parent
技术分享图片
注释掉
技术分享图片

之前的argu.vue这里有个动态路由匹配。参数叫做name
技术分享图片
在home页的按钮,让他跳转到argu
技术分享图片
在路由配置里面需要给他加一个name为argu
技术分享图片
加params
技术分享图片

技术分享图片
跳转到了argu,同时带了一个参数 ,参数在页面上显示了出来。
技术分享图片
换一种写法,使用ES6的模板语法
技术分享图片

技术分享图片
如果这里上面用了path。下面用params。它会忽略你的params。
技术分享图片

技术分享图片
parmas参数被忽略了
技术分享图片

必须用name下面的params参数才可以
技术分享图片
技术分享图片
技术分享图片
以上就是今天要讲的内容了。 
技术分享图片

结束

 

2.Vue技术栈开发实战-路由基础篇

原文:https://www.cnblogs.com/wangjunwei/p/12907801.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!