一文搞定Vue3中使用vue-router

????????关注后回复 “进群” ,拉你进程序员交流群????????

作者丨前端仔

来源丨前端发现

在 Vue Router API 从 v3(Vue2)到 v4(Vue3)的重写过程中,大部分的 Vue Router API 都没有变化,但是在迁移你的程序时,你可能会遇到一些破坏性的变化。本文将使用v4体验新的API。

new Router 变成 createRouter

Vue Router 不再是一个类,而是一组函数。现在抛弃 new Router(),改成调用 createRouter函数

//v3
import Router from 'vue-router'
Vue.use(Router)
export default new Router({
  routes
})

//v4
import { createRouter } from 'vue-router'
const router = createRouter({
  // ...
})

废除了mode选项配置

新的history配置取代旧的 mode选项

v3:
- mode:默认`hash模式`
- 使用mode选项指定路由渲染模式

v4:
- mode的选项已被更换为更为灵活的`history选项`
- 每一个模式都由从vue-router导出的函数一一对应

对应关系如下:

  • history — createWebHistory

  • hash — createWebHashHistory

  • abstract — createMemoryHistory

所以V4后创建路由实例将变成如下:

`/*router/index.js*/`
//这里使用history模式举例
import { createRouter, createWebHistory } from 'vue-router'
export const constantRoutes = [
  {
    path: '/',
    component: () => import('@/views/home/index.vue'),
    meta: {
      title: '首页'
    }
  },
  ...
]
export const router = createRouter({ 
  history: createWebHistory(),
  routes: constantRoutes
})
//将创建好的路由实例导出
export default router

建议:以后创建路由表引入路由采用懒加载路由的方式,这样打包的时候文件大小会变得小些。

component: () => import('@/views/home/index.vue')

main.js

import { createApp } from 'vue'
import App from './App.vue'
import router from './router'

//使用链式.use(...) eg:.use(store)等等
createApp(App).use(router).mount('#app')

取消(*)通配符路由

这种v3使用的路由匹配方式在v4已不适用了

{
  // 会匹配所有路径
  path: '*'
}
{
  // 会匹配以 `/user-` 开头的任意路径
  path: '/user-*'
}

现在必须使用自定义的 regex 参数来定义所有路由(*、/*)

{
  path: '/404',
  name: '404',
  component: () => import('@/views/error-page/404.vue'),
  meta: {
    title: '404'
  }
},
{
  path: '/:pathMatch(.*)',
  redirect: '/404'
},

<keep-alive>写法变更

v3中路由缓存页面是通过<keep-alive>包组件包住路由组件<router-view>达到页面数据缓存的效果

//v3
<keep-alive v-if="$route.meta.keepAlive">
  <router-view></router-view>
</keep-alive>
<router-view v-if="!$route.meta.keepAlive"></router-view>

v4中,component是vue中的特殊组件,:is是用来绑定指定组件,这里是与路由对应的页面绑定

//v4
<router-view v-slot="{ Component }">
  <keep-alive>
    <component :is="Component"  v-if="$route.meta.keepAlive"/>
  </keep-alive>
  <component :is="Component"  v-if="!$route.meta.keepAlive"/>
</router-view> 

新增useRoute、useRouter

假定我们在路由表中定义这么一个用户详情组件,那么我在用户详情页该如何去获取路由中用户的Id呢?

{
  path: '/user/:id',
  name: 'userDetail',
  component: () => import('@/views/userDetail/index.vue'),
  meta: {
    title: '用户详情'
  }
}

这时「useRoute」就派上用场了,我们可以在userDetail组件上从vue-router引入这个函数进来

<template>
  <div>
    用户id为:{{id}}
  </div>
</template>
<script>
import { useRoute,useRouter } from 'vue-router'
export default {
  setup() {
    const { params: { id } } = useRoute()
    return { id }
  }
}
</script>

当然想看下useRoute和useRouter有什么内容我们可以直接将方法挂在到浏览器上:

window.route = useRoute() window.router = useRouter()

这样我们在浏览器控制台输入router就能看到内容了可以看到useRouter()里面包含了路由的实例,跟V3的this.$router是一样的,v3我们写编程式路由是这样的:

this.$router.push('/login')

如今我们跳转路由是通过引入useRouter函数获取路由的实例方法

import { useRoute,useRouter } from 'vue-router'
export default {
  setup() {
    const router = useRouter()
    router.push('/login')
  }
}

那useRoute又是什么东东?里面包含的是当前路由信息,通过它可以获取到传参信息等。

-End-

最近有一些小伙伴,让我帮忙找一些 面试题 资料,于是我翻遍了收藏的 5T 资料后,汇总整理出来,可以说是程序员面试必备!所有资料都整理到网盘了,欢迎下载!

点击????卡片,关注后回复【面试题】即可获取

在看点这里好文分享给更多人↓↓

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
?PCA login: root ;使用root用户 password: linux ;口令是linux # shutdown -h now ;关机 # init 0 ;关机 # logout # login # ifconfig ;显示IP地址 # ifconfig eth0 netmask ;设置IP地址 # ifconfig eht0 netmask down ; 删除IP地址 # route add 0.0.0.0 gw # route del 0.0.0.0 gw # route add default gw ;设置网关 # route del default gw ;删除网关 # route ;显示网关 # ping # telnet ;建议telnet之前先ping一下 ---------------------------------------- 交换机命令 ~~~~~~~~~~ [Quidway]super password 修改特权用户密码 [Quidway]sysname 交换机命名 [Quidway]interface ethernet 0/1 进入接口视图 [Quidway]interface vlan x 进入接口视图 [Quidway-Vlan-interfacex]ip address 10.65.1.1 255.255.0.0 [Quidway]ip route-static 0.0.0.0 0.0.0.0 10.65.1.2 静态路由=网关 [Quidway]user-interface vty 0 4 [S3026-ui-vty0-4]authentication-mode password [S3026-ui-vty0-4]set authentication-mode password simple 222 [S3026-ui-vty0-4]user privilege level 3 [Quidway-Ethernet0/1]duplex {half|full|auto} 配置端口双工工作状态 [Quidway-Ethernet0/1]speed {10|100|auto} 配置端口工作速率 [Quidway-Ethernet0/1]flow-control 配置端口流控 [Quidway-Ethernet0/1]mdi {across|auto|normal} 配置端口MDI/MDIX状态平接或扭接 [Quidway-Ethernet0/1]port link-type {trunk|access|hybrid} 设置接口工作模式 [Quidway-Ethernet0/1]shutdown 关闭/重起接口 [Quidway-Ethernet0/2]quit 退出系统视图 [Quidway]vlan 3 创建/删除一个VLAN/进入VLAN模式 [Quidway-vlan3]port ethernet 0/1 to ethernet 0/4 在当前VLAN增加/删除以太网接口 [Quidway-Ethernet0/2]port access vlan 3 将当前接口加入到指定VLAN [Quidway-Ethernet0/2]port trunk permit vlan {ID|All} 设trunk允许的VLAN [Quidway-Ethernet0/2]port trunk pvid vlan 3 设置trunk端口的PVID [Quidway]monitor-port 指定和清除镜像端口 [Quidway]port mirror 指定和清除被镜像端口 [Quidway]port mirror int_list observing-port int_type int_num 指定镜像和被镜像 [Quidway]description string 指定VLAN描述字符 [Quidway]description 删除VLAN描述字符 [Quidway]display vlan [vlan_id] 查看VLAN设置 [Quidway]stp {enable|disable} 开启/关闭生成树,默认关闭 [Quidway]stp priority 4096 设置交换机的优先级 [Quidway]stp root {primary|secondary} 设置交换机为根或根的备份 [Quidway-Ethernet0/1]stp cost 200 设置交换机端口的花费 作者:Vision_Klaus 2006-8-20 11:07   回复此发言 -------------------------------------------------------------------------------- 2 华为路由交换的基本命令 [SwitchA-vlanx]isolate-user-vlan enable 设置主vlan [SwitchA]Isolate-user-vlan secondary 设置主vlan包括的子vlan [Quidway-Ethernet0/2]port hybrid pvid vlan 设置vlan的pvid [Quidway-Ethernet0/2]port hybrid pvid 删除vlan的pvid [Quidway-Ethernet0/2]port hybrid vlan vlan_id_list untagged 设置无标识的vlan 如果包的vlan id与PVId一致,则去掉vlan信息. 默认PVID=1。 所以设置PVID为所属vlan id, 设置可以互通的vlan为untagged. ---------------------------------------- 路由器命令 ~~~~~~~~~~ [Quidway]display version 显示版本信息 [Quidway]display current-configuration 显示当前配置 [Quidway]display interfaces 显示接口信息 [Quidway]display ip route 显示路由信息 [Quidway]sysname aabbcc 更改主机名 [Quidway]super passwrod 123456 设置口令 [Quidway]interface serial0 进入接口 [Quidway-serial0]ip address [Quidway-serial0]undo shutdown 激活端口 [Quidway]link-protocol hdlc 绑定hdlc协议 [Quidway]user-interface vty 0 4 [Quidway-ui-vty0-4]authentication-mode password [Quidway-ui-vty0-4]set authentication-mode password simple 222 [Quidway-ui-vty0-4]user privilege level 3 [Quidway-ui-vty0-4]quit [Quidway]debugging hdlc all serial0 显示所有信息 [Quidway]debugging hdlc event serial0 调试事件信息 [Quidway]debugging hdlc packet serial0 显示包的信息 静态路由: [Quidway]ip route-static {interface number|nexthop}[value][reject|blackhole] 例如: [Quidway]ip route-static 129.1.0.0 16 10.0.0.2 [Quidway]ip route-static 129.1.0.0 255.255.0.0 10.0.0.2 [Quidway]ip route-static 129.1.0.0 16 Serial 2 [Quidway]ip route-static 0.0.0.0 0.0.0.0 10.0.0.2 动态路由: [Quidway]rip [Quidway]rip work [Quidway]rip input [Quidway]rip output [Quidway-rip]network 1.0.0.0 ;可以all [Quidway-rip]network 2.0.0.0 [Quidway-rip]peer ip-address [Quidway-rip]summary [Quidway]rip version 1 [Quidway]rip version 2 multicast [Quidway-Ethernet0]rip split-horizon ;水平分隔 [Quidway]router id A.B.C.D 配置路由器的ID [Quidway]ospf enable 启动OSPF协议 [Quidway-ospf]import-route direct 引入直联路由 [Quidway-Serial0]ospf enable area 配置OSPF区域 标准访问列表命令格式如下: acl [match-order config|auto] 默认前者顺序匹配。 rule [normal|special]{permit|deny} [source source-addr source-wildcard|any] 例: [Quidway]acl 10 [Quidway-acl-10]rule normal permit source 10.0.0.0 0.0.0.255 [Quidway-acl-10]rule normal deny source any 扩展访问控制列表配置命令 配置TCP/UDP协议的扩展访问列表: rule {normal|special}{permit|deny}{tcp|udp}source {|any}destination |any} [operate] 配置ICMP协议的扩展访问列表: rule {normal|special}{permit|deny}icmp source {|any]destination {|any] 作者:Vision_Klaus 2006-8-20 11:07   回复此发言 -------------------------------------------------------------------------------- 3 华为路由交换的基本命令 [icmp-code] [logging] 扩展访问控制列表操作符的含义 equal portnumber 等于 greater-than portnumber 大于 less-than portnumber 小于 not-equal portnumber 不等 range portnumber1 portnumber2 区间 扩展访问控制列表举例 [Quidway]acl 101 [Quidway-acl-101]rule deny souce any destination any [Quidway-acl-101]rule permit icmp source any destination any icmp-type echo [Quidway-acl-101]rule permit icmp source any destination any icmp-type echo-reply [Quidway]acl 102 [Quidway-acl-102]rule permit ip source 10.0.0.1 0.0.0.0 destination 202.0.0.1 0.0.0.0 [Quidway-acl-102]rule deny ip source any destination any [Quidway]acl 103 [Quidway-acl-103]rule permit tcp source any destination 10.0.0.1 0.0.0.0 destination-port equal ftp [Quidway-acl-103]rule permit tcp source any destination 10.0.0.2 0.0.0.0 destination-port equal www [Quidway]firewall enable [Quidway]firewall default permit|deny [Quidway]int e0 [Quidway-Ethernet0]firewall packet-filter 101 inbound|outbound 地址转换配置举例 [Quidway]firewall enable [Quidway]firewall default permit [Quidway]acl 101 [Quidway-acl-101]rule deny ip source any destination any [Quidway-acl-101]rule permit ip source 129.38.1.4 0 destination any [Quidway-acl-101]rule permit ip source 129.38.1.1 0 destination any [Quidway-acl-101]rule permit ip source 129.38.1.2 0 destination any [Quidway-acl-101]rule permit ip source 129.38.1.3 0 destination any [Quidway]acl 102 [Quidway-acl-102]rule permit tcp source 202.39.2.3 0 destination 202.38.160.1 0 [Quidway-acl-102]rule permit tcp source any destination 202.38.160.1 0 destination-port great-than 1024 [Quidway-Ethernet0]firewall packet-filter 101 inbound [Quidway-Serial0]firewall packet-filter 102 inbound [Quidway]nat address-group 202.38.160.101 202.38.160.103 pool1 [Quidway]acl 1 [Quidway-acl-1]rule permit source 10.110.10.0 0.0.0.255 [Quidway-acl-1]rule deny source any [Quidway-acl-1]int serial 0 [Quidway-Serial0]nat outbound 1 address-group pool1 [Quidway-Serial0]nat server global 202.38.160.101 inside 10.110.10.1 ftp tcp [Quidway-Serial0]nat server global 202.38.160.102 inside 10.110.10.2 www tcp [Quidway-Serial0]nat server global 202.38.160.102 8080 inside 10.110.10.3 www tcp [Quidway-Serial0]nat server global 202.38.160.103 inside 10.110.10.4 smtp udp PPP验证: 主验方:pap|chap [Quidway]local-user u2 password {simple|cipher} aaa [Quidway]interface serial 0 [Quidway-serial0]ppp authentication-mode {pap|chap} [Quidway-serial0]ppp chap user u1 //pap时,不用此句 pap被验方: [Quidway]interface serial 0 [Quidway-serial0]ppp pap local-user u2 password {simple|cipher} aaa chap被验方: [Quidway]interface serial 0 [Quidway-serial0]ppp chap user u1 [Quidway-serial0]local-user u2 password {simple|cipher} aaa 只找到这个,哪位有好点的分享下谢谢

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值