VUE3 Router路由

谁践踏了优雅 2022-09-07 09:49 359阅读 0赞

使用Vue Router可以在不同的组件间切换,根据不同的url地址,路由跳转到不同的组件

提供了俩个路由组件

:用来定义导航,默认会创建标签,根据指定的url路径跳转到组件

:用来渲染url路径对应的组件,将组件显示到当前定义的位置

20210823010458966.png

写一个路由:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NoZWhlYzIwMTA_size_16_color_FFFFFF_t_70

index.js

  1. import { createRouter, createWebHistory } from 'vue-router'
  2. import Home from '../views/Home.vue'
  3. //配置路由,简单来说就是通过url地址找到组件,一个路径对应一个组件
  4. const routes = [
  5. //项目打开默认访问的组件
  6. {
  7. path: '/', //url路径,称为根路径
  8. name: 'Home', //路由名称,用来唯一标示当前路由,称为命名路由
  9. component: Home //对应的组件
  10. },
  11. //其他组件都使用懒加载
  12. {
  13. path: '/about',
  14. name: 'About',
  15. //路由懒加载lazy,提高性能
  16. component: () => import( '../views/About.vue')
  17. },
  18. {
  19. path:'/user',
  20. name:'User',
  21. component: () => import('../views/User.vue')
  22. }
  23. ]
  24. //创建路由实例
  25. const router = createRouter({
  26. history: createWebHistory(process.env.BASE_URL), //has模式
  27. routes //路由配置项,上面配置的routes
  28. })
  29. //默认对外提供路由,导出路由
  30. export default router

main.js

  1. import { createApp } from 'vue'
  2. import App from './App.vue'
  3. //引入路由
  4. import router from './router'
  5. // createApp(App).use(router).mount('#app')
  6. const app=createApp(App)
  7. app.use(router)
  8. app.mount('#app')

User.vue

  1. <template>
  2. <div>
  3. <h1>用户</h1>
  4. </div>
  5. </template>
  6. <script>
  7. export default{
  8. }
  9. </script>
  10. <style>
  11. </style>

App.vue

  1. <template>
  2. <div id="nav">
  3. <!--使用<router-link>组件定义导航,to属性:指定链接,即url路径 -->
  4. <router-link to="/">Home</router-link> |
  5. <router-link to="/about">About</router-link> |
  6. <router-link to="/user">User</router-link>
  7. </div>
  8. <!--
  9. 使用<router-view>组件来渲染url路径对应的组件,将组建显示在当前位置
  10. -->
  11. <router-view/>
  12. </template>
  13. <style lang="less">
  14. #app {
  15. font-family: Avenir, Helvetica, Arial, sans-serif;
  16. -webkit-font-smoothing: antialiased;
  17. -moz-osx-font-smoothing: grayscale;
  18. text-align: center;
  19. color: #2c3e50;
  20. }
  21. #nav {
  22. padding: 30px;
  23. a {
  24. font-weight: bold;
  25. color: #2c3e50;
  26. &.router-link-exact-active {
  27. color: #42b983;
  28. }
  29. }
  30. }
  31. </style>

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NoZWhlYzIwMTA_size_16_color_FFFFFF_t_70 1

路由的嵌套:

当应用由多层嵌套的组件构成时,需要使用嵌套路由

url路径的定义:
根路径就是/,默认访问项目时显示的就是根路径对应的组件

嵌套的路由的路径
子级路由可以使用相对路径或绝对路径
通配路径
可以使用/:pathMatch(.*)/*来设置当url路径不存在时显示的组件

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NoZWhlYzIwMTA_size_16_color_FFFFFF_t_70 2

User.vue

  1. <template>
  2. <div>
  3. <h1>用户</h1>
  4. <p>
  5. <router-link to="/user/login">用户登录</router-link> |
  6. <router-link to="/user/register">用户注册</router-link>
  7. </p>
  8. </div>
  9. <router-view></router-view>
  10. </template>
  11. <script>
  12. export default{
  13. }
  14. </script>
  15. <style lang="less">
  16. </style>

index.js

  1. import { createRouter, createWebHistory } from 'vue-router'
  2. import Home from '../views/Home.vue'
  3. //配置路由,简单来说就是通过url地址找到组件,一个路径对应一个组件
  4. const routes = [
  5. //项目打开默认访问的组件
  6. {
  7. path: '/', //url路径,称为根路径
  8. name: 'Home', //路由名称,用来唯一标示当前路由,称为命名路由
  9. component: Home //对应的组件
  10. },
  11. //其他组件都使用懒加载
  12. {
  13. path: '/about',
  14. name: 'About',
  15. //路由懒加载lazy,提高性能
  16. component: () => import( '../views/About.vue')
  17. },
  18. {
  19. path:'/user',
  20. name:'User',
  21. component: () => import('../views/User.vue'),
  22. children:[
  23. {
  24. path:'login',//相对路径(不以/开头),相对于上一层的位置
  25. name:'login',
  26. component:() => import('../views/login.vue')
  27. },
  28. {
  29. path:'/user/register', //绝对路径
  30. name:'register',
  31. component:() => import('../views/register.vue')
  32. }
  33. ]
  34. },
  35. //匹配404页面的路由
  36. {
  37. path:'/:pathMatch(.*)/*',
  38. redirect:'/' //如果匹配的路由不存在,都跳转到根路径
  39. }
  40. ]
  41. //创建路由实例
  42. const router = createRouter({
  43. history: createWebHistory(process.env.BASE_URL), //has模式
  44. routes //路由配置项,上面配置的routes
  45. })
  46. //默认对外提供路由,导出路由
  47. export default router

20210823012634744.gif

发表评论

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

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

相关阅读

    相关 vue-router

    > 在这个世界上取得成就的人,都努力去寻找他们想要的机会,如果找不到机会,他们便自己创造机会。 > 你好,我是梦阳辰!期待与你相遇! 文章目录 01.什么是路

    相关 vue-routervue简介

    (一)命名路由 命名路由是目前开发当中使用最频繁的形式 通过一个名称 name:属性来标识一个路由显得更方便一些,特别是在链接一个路由,或者是执行一些跳转的时候,可以直

    相关 VUE3 Router

    > 使用Vue Router可以在不同的组件间切换,根据不同的url地址,路由跳转到不同的组件 > > 提供了俩个路由组件 > > <router-link>:用来定义导航