Vue3 _ 22. Vue Router 4.0 基本使用

一、什么是 Router

打开 Vue Router 官网:https://next.router.vuejs.org/

可以看到,这个 Router 是 Vue 官方使用的路由,是和 Vue.js 核心深度集成。

我们之前也说过,我们以后是前后端分离式开发,分离后页面的跳转是交给前端本身去控制,而这个 Router 就是这一套控制的集成。

二、安装

我们想要使用这个 Router,首先要引入一下 Router。

npm install vue-router@4

当然,这个我们其实在创建项目的时候已经引入了这个 Router。来看一下

并且 Vue 已经帮我们把这个 router 加载到全局了。所以这个安装是给没有安装 Router 的项目去使用的~~~

三、配置文件讲解

首先是 main.js

我们在 main.js 中引入 router,然后使用 use() 方法将这个 router 注册到整个 Vue 实例中。

然后是路由的配置文件 router/index.js

首先看这两个 import,这个是引入我们的路由还有 App 这个页面。

下面定义了一个 routers,注意,这个是一个数组,我们到时候会在这里配置好多个路由地址,这里我们只配置了一个非常简单的 App 页面(这也就是为啥我们启动项目后,就可以直接看到我们的 App.vue ~)

然后是 router,这个里面我们使用了 history 的模式,这个接触过之前的 vue2 的项目的人可能知道,之前项目并不是这种 history,而是使用的 hash 模式。我们来看一下

hash 模式

history 模式

  

前端路由的核心就是:改变视图的同时,不会向后端发出请求。

为了达到这种目的,浏览器本身提供了两种支持,也就是我们上面看到的 hash 和 history,来看看这两种有啥不同

hash —— 即地址栏 URL 中的 # 符号(此 hash 不是密码学里的散列运算)。
比如这个 URL:http://www.abc.com/#/hello,hash 的值为 #/hello。它的特点在于:hash 虽然出现在 URL 中,但不会被包括在 HTTP 请求中,对后端完全没有影响,因此改变 hash 不会重新加载页面。

history —— 利用了 HTML5 History Interface 中新增的 pushState() 和 replaceState() 方法。(需要特定浏览器支持)
这两个方法应用于浏览器的历史记录栈,在当前已有的 back、forward、go 的基础之上,它们提供了对历史记录进行修改的功能。只是当它们执行修改时,虽然改变了当前的 URL,但浏览器不会立即向后端发送请求。

这里 Vue 的建议是让我们使用 history 这种模式,具体为啥大家可以自己下去研究。

四、使用

我们这里先创建两个个页面

页面有了,我们这里先来配置一下 router/index.js

其实很简单,首先我们把两个页面引入进来,然后将这两个页面配置到和 App 同一级即可。

接着我们去 App.vue 下。我们在这里写两个 router-link

我们来看官网对 router-link 的介绍

写完这个 router-link 还不够,我们还需要定义一个 router-view 

这个 router-view 同样去看官网解释

写完之后,我们从新启动项目

五、测试

可以看到,刚打开的时候你也许吓一大跳,为啥会有两个一模一样的 App.vue

这里我要解释一下为啥会出现第二个 App.vue。原因是因为:<router-view></router-view>

这里我们是请求的:/,路由拿到这个请求之后,会根据我们配置的 router/index.js 去寻找我们的请求地址所对应的页面,很明显,我们配置的根请求就是 App.vue

所以呢,我们的 router-view 就会将整个 App.vue 再次加载出来,所以除去本身,我们还有一个是路由帮我们加载的。(我们下面会去说这个怎么去解决)

我们先来点击一下上面的 router-link。

可以看到啊,这个是 OK 的。

六、router 配置默认页面

接着我们来说一下我们上面的那个问题。

这里我们可以将 / 根请求做一次重定向,直接重定向到 /hello-router1,这样的话,我们就不会出现第二次加载 App.vue 了。

我们使用 redirect 直接进行重定向即可,然后保存,我们再来请求 http://localhost:8080

ok 的啊

最后,再来说一个问题,我们上面配置了根请求,然后做了重定向,那么我们第一次加载页面的时候是怎么加载的,按道理来说不会出现才对。

这里解释一下,我们第一次加载页面靠的不是这个路由,而是我们 main.js 中的挂载配置。来看一下

即使我们在路由中将 App 的那段路由代码删除了,同样也是可以访问的。可以自己去尝试一下~~~

这一篇东西有点多,自己动手练习一下~~

有问题可以联系我:QQ 2100363119,欢迎大家访问我的个人网站:https://www.lemon1234.com

最近网站已经做好,并且已经上线,欢迎各位留言~~~

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

他 他 = new 他()

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值