IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> 28_路由 -> 正文阅读

[JavaScript知识库]28_路由

28_路由

npm i vue-router@3

01_基本路由效果实现

1.创建文件夹router 创建文件 index.js

//该文件专门用于创建整个应用的路由器
import VueRouter from "vue-router";
//引入组件
import About from '../components/About'
import Home from '../components/Home'


//创建并暴露一个路由器
export default new VueRouter({
  routes: [
    {
      path: "/about",
      component: About,
    },
    {
        path: "/home",
        component: Home,
      },
  ],
});

2.main.js

import Vue from "vue";
import App from "./App.vue";

//引入VueRouter
import VueRouter from 'vue-router'
//引入路由器
import router from './router'
Vue.config.productionTip = false;
//应用插件
Vue.use(VueRouter)

new Vue({
  render: (h) => h(App),
  router:router
}).$mount("#app");

3.About.vue

<template>
  <h2>
      我是About内容
  </h2>
</template>

<script>
export default {
name:'About',
}
</script>

4.Home.vue

<template>
  <h2>
      我是Home内容
  </h2>
</template>

<script>
export default {
name:'Home',
}
</script>

5.App.vue

<template>
  <div id="app">
    <h1>Vue Router Demo</h1>
    <!-- 原始html使用a标签实现页面的跳转 -->
    <!-- <div><a href="./about.html">About</a></div>
    <a href="./home.html">Home</a> <hr> -->

    <div>
      <router-link to="/about">About</router-link>
      <hr>
      <router-link to="/home">Home</router-link>
      <hr />

      <div>
        <!-- 指定组件的呈现位置 -->
        <router-view></router-view>
      </div>
    </div>
  </div>
</template>

<script>
export default {
  name: "App",
};
</script>

几个注意点

在这里插入图片描述

02_嵌套(多级)路由

在这里插入图片描述

代码演示

一般路由组件放在pages下,一般组件放在components下

在这里插入图片描述

Home.vue

<template>
  <div>
    <h2>我是Home内容</h2>
    <ul>
        <li>
            <router-link to="/home/news">News</router-link>
        </li>
        <li>
            <router-link to="/home/message">Message</router-link>
        </li>
    </ul>
    <router-view></router-view>
  </div>
</template>

03_路由传参

在这里插入图片描述

代码演示

router/index.js

//该文件专门用于创建整个应用的路由器
import VueRouter from "vue-router";
//引入组件
import About from "../components/About";
import Home from "../components/Home";
import News from "../pages/News";
import Message from "../pages/Message";
import Detail from "../pages/Detail";
//创建并暴露一个路由器
export default new VueRouter({
  routes: [
    {
      path: "/about",
      component: About,
    },
    {
      path: "/home",
      component: Home,
      children: [
        {
          path: "news",
          component: News,
        },
        {
          path: "message",
          component: Message,
          children: [
            {
              path: "detail",
              component: Detail,
            },
          ],
        },
      ],
    },
  ],
});

Message.vue

<template>
  <div>
    <ul>
      <li v-for="m in messageList" :key="m.id">
        <!-- 第一种写法 to的字符串写法-->
        <!-- <router-link :to="`/home/message/detail?id=${m.id}&title=${m.title}`">
          {{ m.title }}
        </router-link> -->

        <!-- to的对象写法 -->
        <router-link :to="{
          path:'/home/message/detail',
          query:{
            id:m.id,
            title:m.title
          }
        }">
          {{ m.title }}
        </router-link>
        &nbsp;&nbsp;
      </li>
      <hr />
      <router-view></router-view>
    </ul>
  </div>
</template>

<script>
export default {
  name: "Message",
  data() {
    return {
      messageList: [
        { id: "001", title: "消息001" },
        { id: "002", title: "消息002" },
        { id: "003", title: "消息003" },
      ],
    };
  },
};
</script>

Detail.vue

<template>
  <ul>
      <li>消息编号: {{$route.query.id}} </li>
      <li>消息标题:  {{$route.query.title}} </li>
  </ul>
</template>

<script>
export default {
name:'Detail',
}
</script>

04_命名路由

在这里插入图片描述

在这里插入图片描述

05_路由的params参数

在这里插入图片描述

在这里插入图片描述

3.接收参数

<li>消息编号: {{$route.params.id}} </li>
<li>消息标题:  {{$route.params.title}} </li>

06_路由的props参数

作用:让路由组件更方便的收到参数

import VueRouter from "vue-router";
import About from "../components/About";
import Home from "../components/Home";
import News from "../pages/News";
import Message from "../pages/Message";
import Detail from "../pages/Detail";
export default new VueRouter({
  routes: [
    {
      path: "/about",
      component: About,
    },
    {
      path: "/home",
      component: Home,
      children: [
        {
          path: "news",
          component: News,
        },
        {
          path: "message",
          component: Message,
          children: [
            {
              path: "detail",
              component: Detail,
              //props的第一种写法,值为对象 (用的非常少)
              //该对象中的所有key-value都会以props的形式传给Detail组件
              //props:{a:1,b:'hello'}

              //props的第二种写法,值为布尔值,
              //若布尔值为真,就会把该路由组件收到的所有params参数,以props的形式传给Detail组件
              //props:true

              //props的第三种写法,值为函数
              props($route){
                return {id:$route.query.id,title:$route.query.title}
              }
            },
          ],
        },
      ],
    },
  ],
});

Message.vue

<template>
  <div>
    <ul>
      <li v-for="m in messageList" :key="m.id">
        <router-link :to="{
          path:'/home/message/detail',
          query:{
            id:m.id,
            title:m.title
          }
        }">
          {{ m.title }}
        </router-link>
        &nbsp;&nbsp;
        </li>
      <hr />
      <router-view></router-view>
    </ul>
  </div>
</template>

<script>
export default {
  name: "Message",
  data() {
    return {
      messageList: [
        { id: "001", title: "消息001" },
        { id: "002", title: "消息002" },
        { id: "003", title: "消息003" },
      ],
    };
  },
};
</script>

Detail.vue

<template>
  <ul>
       <li>消息编号: {{id}} </li>
      <li>消息标题:  {{title}} </li>
  </ul>
</template>

<script>
export default {
name:'Detail',
props:['id','title']
}
</script>

07_< router-link >的replace属性

1.作用:控制路由跳转时操作浏览器历史记录的模式

2.浏览器的历史记录有两种写入方式:分别为pushreplace,push是追

加历史记录,replace是替换当前记录l路由跳转时候默认为push

3.如何开启replace模式:<router-link replace …>News< /router-1ink >

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-03-08 22:20:01  更:2022-03-08 22:22:22 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 9:47:30-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码