SPA全称为Single Page Application,即单页应用。单页应用并不是传统意义上的单个页面哦,它是web应用程序设计模式之一,也是我们现在最常用的一种模式。现在,从我们传统的多页应用开发转向单页应用是现代Web开发中的一种常见趋势。为什么现在单页应用越来越流行呢?就是因为多页应用的用户体验太差了!大家可以去体会一下!每当用户导航到新的页面时,整个页面都需要重新加载,网络差点的就和我一样,想读个书等个n多秒。
而单页应用就不一样了,它可以更快的完成页面的切换,流畅性大大的提高了。不信的话你们可以点击我的头像,进入我的主页给我的其他作品都点个赞!开个小玩笑哈!本篇文章我将给大家介绍一下这个SPA单页应用的基础——路由。
为什么讲路由是SPA的基础呢?
在SPA中,所有的交互都在同一个HTML文档中进行,路由系统帮助管理这些交互,将不同的组件或称视图映射到URL的不同部分。这样就可以实现类似于多页应用的效果。如图:
我们通过不同的导航切换到不同的页面的时候,URL后面的路径也会随之改变。而且路由不仅控制页面的显示,还管理应用的状态,当用户在SPA中导航时,路由系统还可以触发下载数据,更新UI状态等操作,确保显示的内容是最新的。
在vue项目中引入路由
我们如要要在我们的项目中使用router的话,就必须在项目中引入路由。我们常用的引入路由的方法有两种。
在刚开始创建我们项目的时候,他会引导引入一些我们需要引入的一些东西
前面的东西我们还是选否,但是在router选项中我们需要选择是才能在我们的项目中引入router。创建好我们的项目后就可以看见我们结构中多了一个router目录和一个views目录。
view目录就是我们存放页面的地方,其实页面就是我们的组件。
配置路由文件
router文件中的index.js文件就是路由配置的核心文件,这个文件主要就是导入必要的模块createRouter, createWebHistory
,实例化路由器,以及定义路由的规则,就是当URL为什么的时候去到对应的页面。具体的文件格式就是这样,我们可以在routes数组内继续添加我们的路由。
这里有必要解释下为什么component又是直接写HomeView,又是使用箭头函数的() =>import('../views/AboutView.vue')
。刚开始的时候我是比较喜欢使用第一种方式的,但是后来写着写着,发现第二种更方便,而且性能更好。因为用第一种方式也要在文件中引入import HomeView from '../views/HomeView.vue'
,而且还总是忘记引入。第二种直接在要用的地方直接导入就可以了,而且() =>import('../views/AboutView.vue')
实现了懒加载技术,也就是说AboutView
组件只有在其路由被访问时才会被加载,有助于减小初始加载时间,提高应用性能,更快的显示我们的单页面。
这其实也是我们单页面的一大痛点,因为所有的内容都在这一个页面要展示,如果一起加载完才显示页面的话,那显示的效果或许比多页面更差,但是当我们使用了懒加载这个技术的话,我们可以很快的就加载我们要显示的页面。
引入路由到主应用:
这一个步骤其实脚手架已经帮我们完成了的。这一步就是我们引入路由实例将其添加到我们的应用中。
import { createApp } from 'vue';
import App from './App.vue';
import router from './router';
const app = createApp(App)
app.use(router)
app.mount('#app')
最后我们就可以在我们的应用中使用路由了。
在router中 提供了两个组件
1. <router-link>连接
2. <router-view>渲染
具体的使用就是这样,
<router-link>
本质还是a标签
如果你中途想添加路由的话,还可以自己手动安装
- 首先我们先在我们的项目中安装router
: 在我们的项目中,通过
npm install vue-router@4
命令安装路由 - 在
src
目录下创建一个名为router
的文件夹,并在其中创建一个index.js
文件。这个index
文件和刚开始我们自动安装router
的index.js
是一样,也是按照一样的操作配置路由。 - 引入路由到主应用:这步操作也和之前自动导入路由是一样的
- 使用路由。
总结
在Web应用程序开发中,尤其是单页应用(SPA)中,路由扮演着至关重要的角色。路由系统负责管理和控制用户的浏览路径,即用户在不同页面或视图之间的导航。它不仅关乎于页面的导航,还深刻影响着应用的性能、用户体验、以及整体的架构设计。本篇文章主要就是讲了一下路由的简单用法,但是路由里面的学问还是很多的,我没有讲到,主要是还是没有想好该怎么介绍,例如重定向,以及路由的两种模式,hashHistory和History模式,等等。这些知识点还是很重要的,得要慢慢掌握。如果兄弟们等不及的可以自己去学习一下,然后教教我。期待在掘金中看到你们的优秀文章!!!