Vue3从入门到实战:快速上手路由器

缺乏、安全感 2024-04-26 01:44 214阅读 0赞

本人在B站上关于vue3的尚硅谷的课程,以下是整理一些笔记。

#

一.路由器和路由的概念

在 Vue 3 中,路由(Router)和路由器(Router)是两个相关但不同的概念。

1. 路由(Router):
路由是指定义在 Vue 应用程序中的不同页面或视图之间的映射关系。每个路由对应着一个特定的 URL,当用户在应用程序中导航到不同的 URL 时,路由会告诉 Vue 哪个组件应该渲染到页面上。路由定义了应用程序的不同页面状态和导航逻辑。

2. 路由器(Router):
路由器是一个 Vue 插件,它提供了在应用程序中使用路由的功能。Vue Router 是 Vue 官方提供的路由器实现,它允许你在 Vue 应用程序中构建 SPA(单页应用程序)并进行客户端路由。路由器负责解析 URL,根据路由配置将不同的组件渲染到正确的位置,并处理应用程序的导航。

通俗点解释:

路由器就像是一个导航系统,负责根据不同的网址告诉网站要显示哪个页面。它会监听浏览器的地址栏变化,一旦检测到地址发生改变,就会根据配置的路由规则找到对应的页面,并将其渲染到浏览器中。

总结来说,路由就是网站的不同页面,而路由器就是负责管理这些页面的工具。路由器根据地址栏中的网址来确定要显示的页面,并确保正确地加载和切换页面内容。

b229746e2cb84a0fb49dd7e88c0fd277.png

(该图来源尚硅谷)

一个路由器有多个路由:

(下图只是举例子解释,不是这种路由器)

ffb61a0dfba141cdb4c3ba6fbf4cf46e.png

二.制定导航区,展示区。

1.在src文件中定义components文件夹

2.在此文件夹定义三个组件:About.vue,Home.vue,News.vue

Header.vue只是起一个标题的作用,没有也可以。

a354e9651eeb4ead8c7410ad827039e7.png

以下是组件的源码:

About.vue

  1. <template>
  2. <div class="about">
  3. <h2>大家好,欢迎来到小李同学的博客</h2>
  4. </div>
  5. </template>
  6. <script setup lang="ts" name="About">
  7. import {onMounted,onUnmounted} from 'vue'
  8. onMounted(()=>{
  9. console.log('About组件挂载了')
  10. })
  11. onUnmounted(()=>{
  12. console.log('About组件卸载了')
  13. })
  14. </script>
  15. <style scoped>
  16. .about {
  17. display: flex;
  18. justify-content: center;
  19. align-items: center;
  20. height: 100%;
  21. color: rgb(85, 84, 84);
  22. font-size: 18px;
  23. }
  24. </style>

Home.vue

  1. <template>
  2. <div class="home">
  3. <img src="http://www.atguigu.com/images/index_new/logo.png" alt="">
  4. </div>
  5. </template>
  6. <script setup lang="ts" name="Home">
  7. </script>
  8. <style scoped>
  9. .home {
  10. display: flex;
  11. justify-content: center;
  12. align-items: center;
  13. height: 100%;
  14. }
  15. </style>

News.vue

  1. <template>
  2. <div class="news">
  3. <ul>
  4. <li><a href="#">新闻001</a></li>
  5. <li><a href="#">新闻002</a></li>
  6. <li><a href="#">新闻003</a></li>
  7. <li><a href="#">新闻004</a></li>
  8. </ul>
  9. </div>
  10. </template>
  11. <script setup lang="ts" name="News">
  12. </script>
  13. <style scoped>
  14. /* 新闻 */
  15. .news {
  16. padding: 0 20px;
  17. display: flex;
  18. justify-content: space-between;
  19. height: 100%;
  20. }
  21. .news ul {
  22. margin-top: 30px;
  23. list-style: none;
  24. padding-left: 10px;
  25. }
  26. .news li>a {
  27. font-size: 18px;
  28. line-height: 40px;
  29. text-decoration: none;
  30. color: #64967E;
  31. text-shadow: 0 0 1px rgb(0, 84, 0);
  32. }
  33. .news-content {
  34. width: 70%;
  35. height: 90%;
  36. border: 1px solid;
  37. margin-top: 20px;
  38. border-radius: 10px;
  39. }
  40. </style>

Header.vue

  1. <template>
  2. <h2 class="title">Vue路由测试</h2>
  3. </template>
  4. <script setup lang="ts" name="Header">
  5. </script>
  6. <style scoped>
  7. .title {
  8. text-align: center;
  9. word-spacing: 5px;
  10. margin: 30px 0;
  11. height: 70px;
  12. line-height: 70px;
  13. background-image: linear-gradient(45deg, gray, white);
  14. border-radius: 10px;
  15. box-shadow: 0 0 2px;
  16. font-size: 30px;
  17. }
  18. </style>

三.制定路由器

1.在src文件中新建好router(路由器)文件夹

2.在文件夹中建立index.ts文件

3.在index.ts文件里面制定路由规则

c7fabaab08014438a5bc70db8c8bbfa2.png

index.ts

  1. //创建一个路由器并暴露出去
  2. //第一步:引入creatRouter
  3. import{createRouter,createWebHistory} from'vue-router'
  4. //引入一个一个可能要呈现的组件
  5. import Home from '@/components/Home.vue'
  6. import About from '@/components/About.vue'
  7. import News from '@/components/News.vue'
  8. //第二步:创建路由器
  9. const router = createRouter({
  10. history:createWebHistory(),//路由器的工作模式
  11. routes:[//一个个的路由规则
  12. {
  13. path:'/home',
  14. component:Home
  15. },
  16. {
  17. path:'/about',
  18. component:About
  19. },
  20. {
  21. path:'/news',
  22. component:News
  23. },
  24. ]
  25. })
  26. export default router//定义好后暴露出去router

createRouter:

Vue Router 提供的一个函数,用于创建路由器实例。

createWebHistory:

createWebHistory 是一个用于创建基于 HTML5 History 模式的路由历史记录管理器的函数,它在 Vue Router 中用于配置路由器的工作模式。

代码解析:

  1. 引入了 createRoutercreateWebHistory 方法,这两个方法是从 vue-router 包中导入的。这些方法将用于创建路由器实例和指定路由器的工作模式。
  2. 引入要呈现的组件,包括 HomeAboutNews 组件。这些组件将在不同的路由下进行渲染。
  3. 使用 createRouter 方法创建了一个路由器实例,并传入了一个配置对象作为参数。配置对象中的 history 属性使用了 createWebHistory()
  4. 在配置对象的 routes 属性中,定义一系列的路由规则。每个路由规则都是一个对象,包含了 pathcomponent 属性。path 表示要匹配的 URL 路径,component 表示该路由对应的组件。
  5. 最后,通过 export default router 将定义好的路由器实例暴露出去,以便在其他地方使用。(一定要暴露,否则等于没写)

四.路由器在App.vue组件中使用

  1. <!-- App.vue 有三种标签,html(结构标签) ,script(交互标签) ,style(样式,用于好看) -->
  2. <template>
  3. <div class = 'app'>
  4. <Header/>
  5. <!-- 导航区 -->
  6. <div class = 'navigate'>
  7. <RouterLink to = '/home'active-class="active" >首页</RouterLink>
  8. <RouterLink to = '/news'active-class="active" >新闻</RouterLink>
  9. <RouterLink to = '/about'active-class="active " >关于</RouterLink>
  10. </div>
  11. <!-- 展示区 -->
  12. <div class = 'main-content'>
  13. <RouterView></RouterView>
  14. </div>
  15. </div>
  16. </template>
  17. <script lang="ts" setup name = "App">
  18. import { RouterView,RouterLink} from 'vue-router';
  19. import Header from './components/Header.vue'
  20. </script>
  21. <style>
  22. /* App */
  23. .navigate {
  24. display: flex;
  25. justify-content: space-around;
  26. margin: 0 100px;
  27. }
  28. .navigate a {
  29. display: block;
  30. text-align: center;
  31. width: 90px;
  32. height: 40px;
  33. line-height: 40px;
  34. border-radius: 10px;
  35. background-color: gray;
  36. text-decoration: none;
  37. color: white;
  38. font-size: 18px;
  39. letter-spacing: 5px;
  40. }
  41. .navigate a.active {
  42. background-color: #64967E;
  43. color: #ffc268;
  44. font-weight: 900;
  45. text-shadow: 0 0 1px black;
  46. font-family: 微软雅黑;
  47. }
  48. .main-content {
  49. margin: 0 auto;
  50. margin-top: 30px;
  51. border-radius: 10px;
  52. width: 90%;
  53. height: 400px;
  54. border: 1px solid;
  55. }
  56. </style>

<RouterView>:

组件是 Vue Router 提供的一个用于动态渲染路由组件的组件。

例如,当路由路径为 /home 时,路由器配置中定义的路由规则,将 Home 组件渲染到 <div class="main-content"> 内部。同样的,当路由路径为 /news 时,会渲染 News 组件,当路由路径为 /about 时,会渲染 About 组件。

active-class:

通过 <RouterLink>,你可以在应用程序中创建导航链接,使用户能够点击链接并导航到不同的路由。

代码解析:

发表评论

表情:
评论列表 (有 0 条评论,214人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Vue2+3入门实战

    作为IT技术相关行业不可或缺的岗位之一,前端开发工程师就业前途广阔,一直是很多同学心中转行的首选行业。但很多人还没开始,便被一系列问题难倒了,比如:前端该如何入门?路线图