vue Router路由

2023-09-18 20:03:11

编程式导航 | Vue Router

看官方文档

vue Router

Vue.js 的官方路由。它与 Vue.js 核心深度集成,让用 Vue.js 构建单页应用变得轻而易举。功能包括:

  • 嵌套路由映射
  • 动态路由选择
  • 模块化、基于组件的路由配置
  • 路由参数、查询、通配符
  • 展示由 Vue.js 的过渡系统提供的过渡效果
  • 细致的导航控制
  • 自动激活 CSS 类的链接
  • HTML5 history 模式或 hash 模式
  • 可定制的滚动行为
  • URL 的正确编码

1.安装路由组件

建立项目时  npm init vue app   cnpm install vue-router@4 --save

2.编写路由脚本

在项目的src/router/index.js 或者 index.ts

import {createRouter, createWebHashHistory} from 'vue-router'
import Home from '../views/Home.vue'
const routes = [
{
path: '/about',
component: () => import('../views/About.vue')
}, {
path: '/home',
component: Home,
}, {
path: '/',
redirect: '/home'
}, {
path: '/login',
component: () => import('../views/Login.vue')
}, {
path: '/user',
component: () => import('../views/User.vue'),
redirect: '/user/manager',
children: [
{path: 'add', component: () => import('../views/UserAdd.vue')},
{path: 'show', component: () => import('../views/UserShow.vue')},
{path: 'manager', component: () => import('../views/UserManager.vue')},
]
}
]
const router = createRouter({
history: createWebHashHistory(),
routes,
})
export default router

App.vue

<template>
<h3>项目首页</h3>
<hr>
<router-link to="/home">首页</router-link> &nbsp;
<router-link to="/login">登录</router-link> &nbsp;
<router-link to="/user">用户管理</router-link>&nbsp;
<router-link to="/about">关于我们</router-link>
<hr>
<router-view/>
</template>

User.vue

<template>
<h3>用户管理</h3>
<hr>
<router-link to="/user/add">添加用户</router-link>&nbsp;
<router-link to="/user/show">查看用户</router-link>&nbsp;
<router-link to="/user/manager">管理用户</router-link>&nbsp;
<hr>
<router-view/>
</template>

3.入口main.js导入使用

在src/main.js入口文件中

import { createApp } from 'vue'
import { createPinia } from 'pinia'
import App from './App.vue'
import router from './router'
import './assets/main.css'
const app = createApp(App)
app.use(createPinia())
app.use(router)
app.mount('#app')

route 重定向redirect

404

嵌套路由,子路由

在Goods.vue组件中,声明router-link 和 子路由视口rounter-view

<template>
<h1>商品中心,商品列表</h1>
<br>
<br>
<router-link to="/goods/show">商品查看</router-link>&nbsp;
<router-link to="/goods/add">添加商品</router-link>&nbsp;
<router-link to="/goods/manager">商品管理</router-link>
<hr>
<router-view/>
</template>
Wechat:webrxwp - Mobile:13014577033 - Email:webrx@126.com - QQ:7031633 

a

{
path: '/goods',
component: () => import('../views/Goods.vue'),
//默认进入子路由manager
redirect: '/goods/manager',
children: [
{path: 'show', component: () => import('../views/GoodsShow.vue')},
{path: 'add', component: () => import('../views/GoodsAdd.vue')},
{path: 'manager', component: () => import('../views/GoodsManager.vue')},
]
}

编程式导航

原来的路由导航方式为声明式导航,编程式导航,是通过路由组件对象的api编程方式,直接路由访问。 router.push(url) router.go(-1) router.back()

<template>
<h1>首页</h1>
<button @click="goa(10)">about/10</button>
<button @click="goback(-3)">go-back</button>
</template>
<script lang="ts" setup>
import {useRouter} from 'vue-router'
const router = useRouter()
const goa = id => {
router.push(`/about/${id}`)
}
const goback = n =>{
router.go(n)
}
</script>
<style scoped>
</style>


// 字符串路径
router.push('/users/eduardo')
// 带有路径的对象
router.push({ path: '/users/eduardo' })
// 命名的路由,并加上参数,让路由建立 url
router.push({ name: 'user', params: { username: 'eduardo' } })
// 带查询参数,结果是 /register?plan=private
router.push({ path: '/register', query: { plan: 'private' } })
// 带 hash,结果是 /about#team
router.push({ path: '/about', hash: '#team' })

命名路由

定义路由 name:'about 命名

, {
path: '/about/:id(\\d+)',
name: 'about',
component: () => import('../views/About.vue'),
props: true
}

使用声明式导航

<router-link :to="{name:'about',params:{id:10}}">about/10</router-link>

编程式导航

// 命名的路由,并加上参数,让路由建立 url
router.push({ name: 'about', params:{ id: 10 }})

路由守卫

全局导航守卫会拦截每个路由规则,从而对每个路由访问权限的控制

更多推荐

AR导览软件定制开发方案

随着智能手机的普及和人们对文化、旅游等方面的需求不断增加,导览软件市场前景广阔。本文将围绕导览软件定制开发方案展开,包括以下部分:一、行业现状及市场需求导览软件市场发展迅速,各类导览软件层出不穷。通过对市场竞争对手的分析,我们发现目前导览软件主要分为两类:1)传统导览软件:以导游解说和景区导览为主,功能相对简单;2)智

魔众题库系统 v8.8.0 公式编辑升级,注册站内信和邮件,手机Banner支持视频背景

魔众题库系统基于PHP开发,可以用于题库管理和试卷生成软件,拥有极简界面和强大的功能,用户遍及全国各行各业。魔众题库系统发布v8.8.0版本,新功能和Bug修复累计23项,公式编辑升级,注册站内信和邮件,手机Banner支持视频背景。2023年09月19日魔众题库系统发布v8.8.0版本,增加了以下23个特性:·[新功

坚鹏:中国邮政储蓄银行金融科技前沿技术发展与应用场景第4期

中国邮政储蓄银行金融科技前沿技术发展与应用场景第4期培训圆满结束中国邮政储蓄银行拥有优良的资产质量和显著的成长潜力,是中国领先的大型零售银行。2016年9月在香港联交所挂牌上市,2019年12月在上交所挂牌上市。中国邮政储蓄银行拥有近4万个营业网点,服务个人客户超6.5亿户。2022年,在《银行家》(TheBanker

外汇天眼:英国FCA引入新规定,强化金融广告审核标准!

英国金融行为监管局(FCA)为帮助人们做出明智的储蓄、投资和借贷决策,将引入新的筛选检查措施,针对那些批准金融广告的公司。批准非受监管公司的金融营销的公司必须证明他们具备批准广告所需的技能和专业知识。那些签署广告批准的人必须了解产品,以确保广告的宣传准确,并合理平衡风险和回报。以前,受FCA授权的任何公司都可以代表不受

Java 21 发布,新功能助力开发更高效

Java21是JavaSE平台的最新长期支持(LTS)版本,于2023年9月19日发布。它包括了一系列新功能和改进,可以让开发人员编写更高效、更可靠、更安全的Java应用程序。新功能亮点Java21的新功能包括:虚拟线程:虚拟线程是一种新的并发模型,可以使开发人员编写更高效的并发代码,而无需担心线程调度和同步的复杂性。

IP转地理位置:探讨技术与应用

IP地址是互联网上设备的唯一标识符,而将IP地址转换为地理位置信息是网络管理、安全监控和市场定位等领域中的一项重要任务。本文将深入探讨IP转地理位置的技术原理和各种应用场景。IP地址与地理位置IP地址(InternetProtocolAddress)是一组数字,用于唯一标识互联网上的设备。它们分为IPv4(32位地址)

深入了解Java的核心库

掌握Java的核心库是成为一名优秀的Java开发者的关键。Java提供了丰富的核心库和API,包括集合框架、输入输出、多线程、异常处理等等。熟悉并掌握这些库的使用,可以提高编程效率和代码质量。在本文中,我们将深入讨论Java的核心库,并提供一些代码示例来帮助读者更好地理解和掌握这些库。1.集合框架:Java的集合框架提

LeetCode算法动态规划—斐波那契数列

目录剑指Offer10-I.斐波那契数列-力扣(LeetCode)题解:代码:运行结果:写一个函数,输入n,求斐波那契(Fibonacci)数列的第n项(即F(N))。斐波那契数列的定义如下:F(0)=0,F(1)=1F(N)=F(N-1)+F(N-2),其中N>1.斐波那契数列由0和1开始,之后的斐波那契数就是由之前

机器学习(18)---朴素贝叶斯

朴素贝叶斯一、概述1.1概率分类器1.2贝叶斯工作原理1.3贝叶斯的性质二、sklearn中的朴素贝叶斯2.1贝叶斯分类器2.2高斯朴素贝叶斯GaussianNB2.3探索贝叶斯:高斯朴素贝叶斯擅长的数据集2.4探索贝叶斯:高斯朴素贝叶斯的拟合效果与运算速度一、概述1.1概率分类器1.在许多分类算法应用中,特征和标签之

LeetCode LCR 103. 零钱兑换【完全背包,恰好装满背包的最小问题】中等

本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章中,我不仅会讲解多种解题思路及其优化,还会用多种编程语言实现题解,涉及

Springboot 实践(17)spring boot整合Nacos配置中心

前文我们讲解了Nacos服务端的下载安装,本文我们降价springboot整合nacos,实现Nacos服务器配置参数的访问。一、启动Nacos服务,创建三个配置文件,如下所示Springboot-Nacos-Client-dev.yaml文件配置参数Springboot-Nacos-Client.yaml文件配置参数

热文推荐