【Vue3从零开始-第七章】7-2 vue-router路由的理解

简介: 【Vue3从零开始-第七章】7-2 vue-router路由的理解

]UWOD(KIB9LJS9~S[T{QHM9.png


开始之前


上一章节中创建项目时候,仅仅是搭建了一个简易的vue项目框架,本章节讲解的vue-router路由的内容需要重新去创建一个项目,在创建项目的时候,把vue-router直接安装进去即可。


~S~LNZQHDN%%`T43@FP9]RU.png


  • 安装到这一步的时候,通过⬇选择Router,然后用 空格键选择,最后回车即可确认了。


Z}2F~PFLQI76O{N6E8%B`WN.png


  • 这一步是询问是否使用history模式创建router,这里我们选择n,就会使用hash模式


  • 其他的还是一样的直接↩即可完成项目搭建了。


main.js配置


9LVU9IP58Y@SRKC8JR5I0~9.png


  • main.js中会发现,创建app实例的时候,还引用了router的插件。


路由是啥?


这时候我们通过npm run serve启动项目之后,在浏览器里面就可以看到路由效果了。


P6~2UN3X)EXJ[BAN5]`]4HL.png


  • 在浏览器中的地址栏里面将运行起来的 URLhttp://localhost:8081复制进去之后会发现,URL后面会多一个 #


  • 多出来的#就是hash路由的模式了。


  • #后面有一个/就表示这是根路由。


  • 当我们点击 About 的时候,路由地址就会变成/about 的路径。


  • 路由发生变化之后,页面也会随之发生改变。


路由是指根据url的不同,展示不同的内容。


路由配置


👉 打开router目录下的index.js文件


~J$TE5Y$~)M2T92574UK_BR.png


const router = createRouter({
  history: createWebHashHistory(),
  routes
})
复制代码


  • createRouter表示创建一个路由。


  • 是通过vue-router插件库提供的生成路由的代码。


const routes = [
  {
    path: '/',
    name: 'home',
    component: HomeView
  },
  {
    path: '/about',
    name: 'about',
    component: () => import(/* webpackChunkName: "about" */ '../views/AboutView.vue')
  }
]
复制代码


routes数组里面定义了两个对象,里面都是页面所需要的路由项


  • path表示URL跳转路径


  • name表示路由名称


  • component表示路由访问的组件页面


当我们访问根路由的时候,会去找到HomeView组件,这个组件就是上面通过import引入的。


import HomeView from '../views/HomeView.vue
复制代码


实际访问的组件是在views目录下的HomeView.vue文件。


但是访问/about路由的时候,component后面是一个箭头函数,并且是用import引入的一个vue文件。


component: () => import(/* webpackChunkName: "about" */ '../views/AboutView.vue')
复制代码


  • import方式引入的vue文件是一个异步加载的过程,稍后会详细说明。

组件跳转


打开URL的时候,会先进入根组件,也就是HomeView页面。


5Q3HT{8@2Q_{6@INZIV@7XE.png


  • HomeView页面中是引用了一个子组件的,上一章节中用过了子组件的内容,所以这里我们把这些不需要的可以删掉。


M5GJJ8A3BL{FG%M7VLJZ2VW.png


  • 这时候刷新浏览器之后就会发现只有一个LOGO显示出来了。


此时点击About链接之后,就会进入到AboutView.vue里面。


90DP}UN921LL$L0XGWLLZYF.png


  • 这个页面的组件中只有This is an about page的内容。


4`2ZE885F6MF1N93C$(]$$F.png


  • 页面上渲染出来的也就是对应的内容


由此可见,还是验证了上面说到的路由原理:路由是指根据url的不同,展示不同的内容。


App组件


👉打开src目录下面的App.vue文件。


%~[3M3GTUQTGGBX]IN_36(I.png


  • 模板标签下面有两个router-link标签,刚好对应了页面上的Home和About链接


router-link标签是跳转路由的标签,可以理解为HTML中的a标签,但是两者是不一样的。


  • 通过点击router-link标签,它会帮你跳到to指向的路径下面。


router-view标签负责展示当前路由对应的组件内容。


如果此时我们把router-view标签删了,那么页面上就不会显示路由跳转之后渲染出来的组件内容了。


N}Y~8JGI~T5RL0T{RA_T~XC.png


新增路由组件


看完上面的内容之后,我们也可以手动尝试添加一个新的路由组件来跳转看看。


EJE1MEG1UVO03~UORC0AEPR.png


  • 首先在views目录下新建一个vue组件,名字可以随意发挥的哦!!


  • 页面上需要渲染的内容也可以随意一点。主要是做一个路由跳转示例而已。


{
    path: '/login',
    name: 'login',
    component: () => import(/* webpackChunkName: "login" */ '../views/LoginView.vue')
}
复制代码


  • 在路由配置页里面就新增一个异步加载组件的方式去写一个配置项。


<router-link to="/login">Login</router-link>
复制代码


  • App.vue里面添加一个router-link标签用来跳转到路由组件。


E4UUU`]CI{M{}T%8[)~PXDJ.png


  • 在浏览器中点击Login链接之后,就会渲染出Login组件了。


异步加载路由组件


上面我们说过在路由配置页里面通过import方式引入组件是一种异步加载的方式渲染的,这种效果可以在浏览器控制台中的Network标签页里面看出效果。


6{%_VT54HI6T)7$5~PG}K3S.png


  • 打开浏览器时,默认会加载所有的组件和js文件。


  • 当我们点击Login或者About链接时,才会加载出对应的组件内容和js文件。


如果我们把AboutView和LoginView的路由项都配置成HomeView的方式会怎样呢?


import HomeView from '../views/HomeView.vue'
import AboutView from '../views/AboutView.vue'
import LoginView from '../views/LoginView.vue'
const routes = [
  {
    path: '/',
    name: 'home',
    component: HomeView
  },
  {
    path: '/about',
    name: 'about',
    component: AboutView
  },
  {
    path: '/login',
    name: 'login',
    component: LoginView
  }
]
复制代码


AV5O%W6~MHT6$QW~LMQ@1(R.png


  • 这时候就可以很直观的看出来效果了,当我们刷新页面的时候,所有需要的文件都会一次性加载出来,再去点击Login或者About链接时,network里面是不会加载新的js文件了。


异步加载路由是为了在加载首页时,不去加载一些暂时不需要或者不是必要的数据文件。可以让首屏页面打开的更快。


当我们使用异步加载路由的方式时,会在跳转页面的时候才去加载和渲染页面内容,此时如果页面过大加载的文件过多的话,也会导致该页面加载速度缓慢。


在项目中使用路由加载方式时,可以根据需要选用合适的方式去配置。


总结


本篇文章主要是和大家一起学习了vue-router的内容,还有一些路由钩子函数的内容在本章节中没有提到,会在后面实战的时候结合项目一起和大家学习。

虽然文章内容是vue-router的基础,但是还是需要好好理解一下的。大家加油💪💪

相关文章
|
1月前
|
JavaScript 前端开发 安全
Vue 3
Vue 3以组合式API、Proxy响应式系统和全面TypeScript支持,重构前端开发范式。性能优化与生态协同并进,兼顾易用性与工程化,引领Web开发迈向高效、可维护的新纪元。(238字)
494 139
|
1月前
|
缓存 JavaScript 算法
Vue 3性能优化
Vue 3 通过 Proxy 和编译优化提升性能,但仍需遵循最佳实践。合理使用 v-if、key、computed,避免深度监听,利用懒加载与虚拟列表,结合打包优化,方可充分发挥其性能优势。(239字)
209 1
|
6月前
|
缓存 JavaScript PHP
斩获开发者口碑!SnowAdmin:基于 Vue3 的高颜值后台管理系统,3 步极速上手!
SnowAdmin 是一款基于 Vue3/TypeScript/Arco Design 的开源后台管理框架,以“清新优雅、开箱即用”为核心设计理念。提供角色权限精细化管理、多主题与暗黑模式切换、动态路由与页面缓存等功能,支持代码规范自动化校验及丰富组件库。通过模块化设计与前沿技术栈(Vite5/Pinia),显著提升开发效率,适合团队协作与长期维护。项目地址:[GitHub](https://github.com/WANG-Fan0912/SnowAdmin)。
907 5
|
2月前
|
开发工具 iOS开发 MacOS
基于Vite7.1+Vue3+Pinia3+ArcoDesign网页版webos后台模板
最新版研发vite7+vue3.5+pinia3+arco-design仿macos/windows风格网页版OS系统Vite-Vue3-WebOS。
365 11
|
1月前
|
JavaScript 安全
vue3使用ts传参教程
Vue 3结合TypeScript实现组件传参,提升类型安全与开发效率。涵盖Props、Emits、v-model双向绑定及useAttrs透传属性,建议明确声明类型,保障代码质量。
247 0
|
3月前
|
缓存 前端开发 大数据
虚拟列表在Vue3中的具体应用场景有哪些?
虚拟列表在 Vue3 中通过仅渲染可视区域内容,显著提升大数据列表性能,适用于 ERP 表格、聊天界面、社交媒体、阅读器、日历及树形结构等场景,结合 `vue-virtual-scroller` 等工具可实现高效滚动与交互体验。
426 1
|
3月前
|
缓存 JavaScript UED
除了循环引用,Vue3还有哪些常见的性能优化技巧?
除了循环引用,Vue3还有哪些常见的性能优化技巧?
239 0
|
4月前
|
JavaScript
vue3循环引用自已实现
当渲染大量数据列表时,使用虚拟列表只渲染可视区域的内容,显著减少 DOM 节点数量。
135 0
|
6月前
|
JavaScript API 容器
Vue 3 中的 nextTick 使用详解与实战案例
Vue 3 中的 nextTick 使用详解与实战案例 在 Vue 3 的日常开发中,我们经常需要在数据变化后等待 DOM 更新完成再执行某些操作。此时,nextTick 就成了一个不可或缺的工具。本文将介绍 nextTick 的基本用法,并通过三个实战案例,展示它在表单验证、弹窗动画、自动聚焦等场景中的实际应用。
588 17
|
6月前
|
JavaScript 前端开发 API
Vue 2 与 Vue 3 的区别:深度对比与迁移指南
Vue.js 是一个用于构建用户界面的渐进式 JavaScript 框架,在过去的几年里,Vue 2 一直是前端开发中的重要工具。而 Vue 3 作为其升级版本,带来了许多显著的改进和新特性。在本文中,我们将深入比较 Vue 2 和 Vue 3 的主要区别,帮助开发者更好地理解这两个版本之间的变化,并提供迁移建议。 1. Vue 3 的新特性概述 Vue 3 引入了许多新特性,使得开发体验更加流畅、灵活。以下是 Vue 3 的一些关键改进: 1.1 Composition API Composition API 是 Vue 3 的核心新特性之一。它改变了 Vue 组件的代码结构,使得逻辑组
1726 0