当前位置: 首页 > article >正文

vue路由的基本使用

文章目录

        • 1.路由的基本使用
        • 2.路由的默认路径
        • 3.嵌套路由
        • 4.路由懒加载
        • 5.动态路由匹配

1.路由的基本使用
  • 安装 vue-router

    npm install vue-router
    
  • 创建路由文件:
    src 目录下创建 router 目录,并在其中创建 index.js 文件。

  • main.js 中使用 vue-router

    import { createApp } from 'vue';
    import App from './App.vue';
    //导入路由器对象
    import router from './router';
    //使用路由器对象
    createApp(App).use(router).mount('#app');
    
  • 配置路由规则:
    router/index.js 文件中:

    //创建路由器对象,以及管理路由配置·url=>组件
    //1、引入函数
    import { createRouter, createWebHistory } from 'vue-router';
    
    //静态导入组件对象
    import Home from '../components/Home';
    import About from '../components/About';
    //配置路由规则
    const routes = [
      //配置一个具体的路由地址对应的页面
      {
        path: '/home',
        component: Home
      },
      {
        path: '/about',
        component: About
      },
    ];
    
    //2、创建路由器对象
    const router = createRouter({
      history: createWebHistory(process.env.BASE_URL),
      //一组路由规则设置到路由器对象中
      //routes:routes
      //如果key和value的值一致,可以简写
      routes,
    });
    //3.导出router
    export default router;
    
  • 创建 HomeAbout 组件:

    • About.vue:

      <template>
        <div>
          <p class="lead">About内容...</p>
        </div>
      </template>
      
      <script>
        export default {
          name: 'About',
        };
      </script>
      
    • Home.vue:

      <template>
        <div>
          <p class="lead">Home内容...</p>
        </div>
      </template>
      
      <script>
        export default {
          name: 'Home',
        };
      </script>
      
  • 编写 App.vue

    <li class="active"><router-link to="/home">Home</router-link></li>
    <li><router-link to="/about">About</router-link></li>
    
    <!-- 组件内容展示区域 -->
    <router-view></router-view>
    
2.路由的默认路径
{
  // 路由默认路径
  path: '/',
  redirect: '/home'
}
3.嵌套路由
{
  path: '/home',
  component: Home,
  children: [
    {
      path: '',
      component: HomeProduct
    },
    {
      path: 'product',
      component: HomeProduct
    },
    {
      path: 'ad',
      component: HomeAd
    }
  ]
}

注意:子级的 path 不需要加 /

4.路由懒加载
  • 替换 import About from '../components/About' 为:

    component:()=>import("../views/About"),
    

在这里插入图片描述

5.动态路由匹配
  • 带参数的动态路由匹配:

    {
      path: "/user/:id",
      component: () => import("../views/User.vue"),
      name: "user",
      props: true, // id的值可以作为props属性传递给组件
    },
    
  • 在组件中接收参数:

    props: ["id"], // 定义组件属性,用于接收保存路由对象中的参数值
    
    this.user = this.users.filter((item) => {
      if (item.id == this.id) {
        return item;
      }
    });
    
    <!-- 每次获取值都需要通过路由对象获取 -->
    编号: {{ $route.params.id }}
    
  1. 404 Not found 路由

    • 新建 NotFound.vue

    • 配置404路由:

      {
        // 404, 匹配路由映射地址
        path: "/:pathMatch(.*)*",
        component: () => import("../views/NotFound.vue"),
      },
      
    • 输出404地址,并跳转页面:

      <h2>没有找到此资源...</h2>
      {{ $route.params.pathMatch }}
      
  2. query方式的参数

    • 第一种方式:字符串拼接

      query传值
      链接地址需要使用字符串模板
      :to = "`xxx=${}`"
      
      <router-link :to="`/order/detail?id=${order.id}&username=${order.username}`">{{ order.username }}</router-link>
      

      输出值:

      <h2>编号:{{ $route.query.id }}</h2>
      <h2>姓名:{{ $route.query.username }}</h2>
      
    • 第二种方式:对象写法

      <router-link :to="{
        // path: '/order/detail',
        name: 'det',
        query: {
          id: order.id,
          username: order.username
        }
      }">{{ order.username }}</router-link>
      

http://www.kler.cn/news/319889.html

相关文章:

  • Linux-L14-Linux中把用户加入到管理者root中
  • 鸿蒙OpenHarmony【轻量系统芯片移植】轻量系统STM32F407芯片移植案例
  • 无人机探测:光电侦测技术详解
  • Gstreamer中,使用mp4或者flv作为视频源去推流RTP等视频流时,需要先解码在编码才能正常
  • 使用Postman工具接口测试
  • Redis常见知识点
  • arm-硬件
  • 源码编译OpenJDK 12
  • JS二叉树的深度优先、广度优先实现代码
  • Java数据库连接jdbc
  • MATLAB基础应用精讲-【数模应用】OR值
  • 牛客周赛 Round 61 (C++实现)
  • 【算法中的最优解和较优解问题】
  • 开源标注工具
  • 【Java】注解与单元测试的使用【主线学习笔记】
  • JS手写Promise以及promise.all方法
  • QQ频道机器人零基础开发详解(基于QQ官方机器人文档)[第七期]
  • Go Mail设置指南:如何提升发送邮件效率?
  • 【Linux 从基础到进阶】Hadoop 大数据平台搭建与优化
  • ARM/Linux嵌入式面经(三九):中科驭数
  • 解决多尺度网络中上采样尺寸不一致问题
  • 低代码中实现数据映射的必要性与方案
  • 18 vue3之定义自定义指令Directive
  • 10.Lab Nine —— file system-上
  • 跳跃列表(Skip List)详解
  • JS显示数字时钟的格式时间
  • Vue.js 与 Flask 或 Django 后端配合
  • ArrayList源码实现(一)
  • Scala第一天
  • Tomcat may not be running