当前位置:首页 > 编程技术 > 正文内容

vue-router 的基本使用

yc8882年前 (2022-12-22)编程技术394

1. vue-router 介绍


vue-router 官方文档: https://router.vuejs.org/zh

vue-router 是 vue 官方的路由插件,它和 vue 是深度集成的,适合用于构建单页面应用

2. vue-router 的使用


安装 vue-router

npm install vue-router --save

在模块化工程中使用 (因为它是一个插件,所以可以通过 Vue.use() 来安装路由功能)

第一步: 导入路由对象,并且调用 Vue.use(VueRouter)

第二步: 创建路由实例,并且传入路由映射配置,导出路由实例

第三步: 在 vue 实例中挂载创建的路由实例

3. 路由映射配置的写法


方案一: 导入组件实例

import Home from '@/components/Home';import About from '@/components/About';const routes = [    {        path: '/home',        component: Home    },    {        path: '/about',        component: About    },]

4. 路由的默认值、history 模式


刚进入页面路由是 /, 可通过路由重定向实现默认路由

{    path: "",    redirect: '/home'},

路由模式默认是 hash 模式,在创建路由实例时只需添加 mode: 'history' 即可改为 history 模式

const router = new VueRouter({    routes,    mode: 'history'})

router-link 组件用于生成路由跳转链接,to 属性用于指定路由

<router-link to="/home">首页</router-link><router-link to="/about">关于</router-link>

router-link 组件属性: tag

router-link 组件默认会被渲染成一个 a 标签,但有些时候我们想要渲染为 li、button 标签等,此时可以使用 tag 属性

<router-link to="/home" tag="li">首页</router-link><router-link to="/about" tag="button">关于</router-link>

router-link 组件属性: replace

设置 replace 属性的话,当点击时,会调用 router.replace() 而不是 router.push(),于是导航后不会留下 history 记录

<router-link to="/home" replace>首页</router-link>

router-link 组件属性: active-class

用于设置路由激活时的 CSS 类名。默认值: “router-link-active”,默认值可以通过路由的构造选项 linkActiveClass 来全局配置

默认值

<router-link to="/home">首页</router-link><a href="/home" class="router-link-exact-active router-link-active" aria-current="page">首页</a>

通过 active-class 属性指定类名

<router-link to="/home" active-class="active">首页</router-link><a href="/home" class="router-link-exact-active active" aria-current="page">首页</a>

通过创建路由实例时的 linkActiveClass 属性指定类名

const router = new VueRouter({    routes,    linkActiveClass: "actived"})

6. 通过代码跳转路由 this.$router.push()


replace 不会留下 history 记录

this.$router.push('/home')this.$router.replace('/home')

7. 动态路由的使用


路由映射配置: 定义一个动态参数 userId

{    path: '/user/:userId',    component: User}

进行路由跳转时 userId 是动态获取的

<router-link :to="'/user/' + userId">档案</router-link>

在 User 组件中获取动态参数 userId ($route: 当前处于活跃状态的路由)

<p>{{ $route.params.userId }}</p>

8. 路由组件的懒加载


执行打包命令

npm run build

当前应用程序开发的所有业务代码都在一个文件中(前缀为 app 的 js 文件)

第三方插件的东西都会打包到 vendor 前缀的 js 文件中

manifest 前缀的 js 文件是为我们打包的代码做底层支撑的 (commonjs、ES6 语法)

因为业务代码都在一个文件中,当打包构建应用时,JavaScript 包会变得非常大,影响页面加载,那么用户就会出现短暂空白的情况,所以我们应该想个办法将存放业务代码的 app.*.js 文件进行分离

如果我们能把不同路由对应的组件分割成不同的代码块,然后当路由被访问的时候才加载对应组件,这样就更加高效了

路由懒加载的主要作用就是将路由对应的组件打包成一个个的 js 代码块,只有在这个路由被访问到时,才加载对应的组件

路由懒加载的写法

{    path: '/home',    component: () => import('@/components/Home')}

如下图所示,三个路由映射使用了懒加载生成了三个对应的 js 文件

9. 嵌套路由的使用


Home 组件

<template>    <div>        <h2>我是首页</h2>        <p>首页内容,哈哈哈</p>        <router-link to="/home/news">新闻</router-link>        <router-link to="/home/message">消息</router-link>        <router-view></router-view>    </div></template>

路由映射配置 (嵌套路由: /home/news、/home/message):

{    path: '/home',    component: Home,    children: [        {            path: '',            redirect: 'news'        },        {            path: 'news',            component: HomeNews        },        {            path: 'message',            component: HomeMessage        },    ]},

10. vue-router 参数传递


传递参数主要有两种方式: params 和 query

类型配置路由传递方式使用示例
params/router/:id在 path 后面跟上对应的值/router/10
query/router对象中使用 query 的 key 作为传递方式/router?id=10

router-link 组件 query 方式传递参数

<router-link :to="{path: '/profile', query: {id: 10, name: 'liang'}}">档案</router-link>

js 代码以 query 方式传递参数

this.$router.push({    path: "/profile",    query: {        id: 10,        name: "liang",    },});

在 Profile 组件中获取 query 方式传递的参数

<template><span

本站发布的内容若侵犯到您的权益,请邮件联系站长删除,我们将及时处理!


从您进入本站开始,已表示您已同意接受本站【免责声明】中的一切条款!


本站大部分下载资源收集于网络,不保证其完整性以及安全性,请下载后自行研究。


本站资源仅供学习和交流使用,版权归原作者所有,请勿商业运营、违法使用和传播!请在下载后24小时之内自觉删除。


若作商业用途,请购买正版,由于未及时购买和付费发生的侵权行为,使用者自行承担,概与本站无关。


本文链接:https://www.10zhan.com/biancheng/10262.html

标签: vue
分享给朋友:

“vue-router 的基本使用” 的相关文章

【说站】laravel实现自定义404页面并给页面传值

【说站】laravel实现自定义404页面并给页面传值

以 laravel5.8 为例,虽然有自带的404页面,但太简单,我们更希望能自定义404页面,将用户留在站点。实现的方式很简单,将自定义的视图文件命名为 404.blade.php,并放到 reso...

【说站】Thymeleaf报错Error resolving template “XXX”

【说站】Thymeleaf报错Error resolving template “XXX”

修改了一下开源项目的目录结构访问突然报错Error resolving template “XXX”可能原因有如下三种:第一种可能:原因:在使用springboot的过程中,如果使用thymeleaf...

【说站】用一句话就可以去除宝塔面板操作上的二次验证

【说站】用一句话就可以去除宝塔面板操作上的二次验证

用过宝塔的朋友应该都会发现,现在宝塔面板有些鸡肋的功能,删除文件、删除数据库、删除站点等操作都需要做计算题!不仅加了几秒的延时等待,还无法跳过!这时候就会有朋友在想,如何去除宝塔面板的二次验证,此篇文...

【说站】Centos8.0如何配置静态IP详解及永久关闭防火墙

【说站】Centos8.0如何配置静态IP详解及永久关闭防火墙

这篇文章主要介绍了详解Centos8 配置静态IP的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来学习一下!1. 查看自己的网关地址点击虚...

【说站】利用Webhook实现Java项目自动化部署

【说站】利用Webhook实现Java项目自动化部署

用webhook就能实现Java项目自动部署,其实原理很简单。费话不多说,直接往下看教程。1. 创建gitee仓库并初始化2. 在linux安装git3. 在宝塔的软件的商店里下载Webhook4....

【说站】电脑安装MySQL时出现starting the server失败原因及解决方案

【说站】电脑安装MySQL时出现starting the server失败原因及解决方案

今天在安装MySQL时出现starting the server失败,经过查询分析得出以下结论,记录一下操作步骤。原因分析:如果电脑是第一次安装MySQL,一般不会出现这样的报错。如下图所示。star...