文章目录

  • 前言
  • 路由实现
    • 1.目标
    • 2.前置条件
      • <1>安装vue-router插件
      • <2>写个用于转跳的组件页
      • <3>写路由文件
      • <4>写路由锚点
    • 3.声明式路由导航
      • <1>实现
      • <2>测试
    • 4.编程式路由导航
      • <1>实现
      • <2>测试

前言

  1. 声明式路由导航
    直接写在html中,结构简单使用方便,但是只能放在<router-link>标签中使用,<router-link>标签会将路由转成<a>标签,通过点击跳转路由,因此局限性也非常大

  2. 编程式路由导航
    需要写在js中,结构也不算复杂,优势在于非常灵活,不受固定标签限制,可以在任意情景下转跳路由

实际应用时可根据自身喜好决定使用哪种路由


路由实现

1.目标

实现一个简单的登录页到主页的转跳

2.前置条件

<1>安装vue-router插件

可以参考这篇文章

https://blog.csdn.net/weixin_43721000/article/details/125017785

<2>写个用于转跳的组件页

ps:普通组件放在 src/components 中,路由组件一般放在 src/pages 或者 src/views 下

简单写个主页,用于登录转跳测试
/src/pages/Home.vue

<template><h1>{{$route.query.msg}}</h1>
</template><script>export default {name: "Home",}
</script><style>
</style>

<3>写路由文件

src 下创建 router/index.js 路由文件,内容如下

import VueRouter from 'vue-router'
import Login from '../pages/Login'   // 引入组件
import Home from '../pages/Home'   // 引入组件// 创建路由器
const router = new VueRouter({routes:[{// 访问根路径时,重定向到login组件path: '/', redirect: 'login'},{name:'login',    // 路由名path:'/login',      // 路由路径component:Login   // 对应组件名},{name:'home',      // 路由名path:'/home',   // 路由路径component:Home   // 对应组件名},]
})export default router;

<4>写路由锚点

路由组件渲染位置

<template><div id="app"><!-- 路由组件显示锚点 start -->  <router-view></router-view><!-- 路由组件显示锚点 end -->  </div>
</template><script>
</script><style>
</style>

3.声明式路由导航

<1>实现

src/pages/Login.vue

<template><div><h1>{{$route.query.msg}}</h1><br>用户名:<input id="uname" name="username" value="ps"/>密码 :<input id="pwd" name="password" value="123"/><!-- 声明式路由导航 start --><router-link :to="{name:'home', query: {msg:'欢迎'}}">登录</router-link>         <!--  query传参 路由不需增加额外配置,举例 path: "/login" --><!-- <router-link :to="{name:'home', params: {msg:'登录'}}">login</router-link> --> <!-- params传参 路由需增加 “:参数名” 配置,举例 path: "/login/:msg" --><!-- 声明式路由导航 end --></div>
</template><script>export default {name: "Login",}
</script><style>
</style>

<2>测试

  1. 启动 vue 访问 http://127.0.0.1:端口/
    页面自动转跳到 http://127.0.0.1:端口/#/login

  2. 点击登录

4.编程式路由导航

<1>实现

src/pages/Login.vue

<template><div><h1>{{$route.query.msg}}</h1><br>用户名:<input id="uname" name="username" value="ps"/>密码 :<input id="pwd" name="password" value="123"/><!-- 编程式路由导航 start --><button @click="toHomePage('好耶')">登录</button><!-- 编程式路由导航 end --></div>
</template><script>export default {name: "Login",methods: {// 编程式路由导航 start ----------------------------------------toHomePage(msg) {// push 方法,路由历史记录会被全部保留this.$router.push({name:'home', query:{msg:msg}})  // query传参 路由不需增加额外配置,举例 path: "/login"// this.$router.push({name:'home', params:{msg:msg}}) // params传参 路由需增加 “:参数名” 配置,举例 path: "/login/:msg"// replace 方法,本次路由记录覆盖上一次的路由记录// this.$router.replace({name:'home', query:{msg:msg}})  // query传参 路由不需增加额外配置,举例 path: "/login"// this.$router.replace({name:'home', params:{msg:msg}}) // params传参 路由需增加 “:参数名” 配置,举例 path: "/login/:msg"}// 编程式路由导航 end ------------------------------------------}}
</script><style>
</style>

<2>测试

  1. 启动 vue 访问 http://127.0.0.1:端口/
    页面自动转跳到 http://127.0.0.1:端口/#/login

  2. 点击登录


Vue声明式路由导航和编程式路由导航的优缺点及实现方法相关推荐

  1. 路由声明式传参和编程式传参

    声明式传参(使用带href /或本质上是a标签的时候) 直接带路径里带携带参数 下例 在地址栏是可以看到参数的(querys传参) 在vue.tools插件里可以观察到 取出路径参数的方式 param ...

  2. vue声明式导航和编程式导航

    声明式导航: 声明式导航是写在template标签里,通过<router-link></router-link>标签来触发: <router-link to=" ...

  3. Vue -- 编程式路由导航

    文章目录 1. 声明式导航 & 编程式导航 1.1 声明式导航 1.2 编程式导航 2. vue-router 中的编程式导航 API 2.1 常用的编程式导航 API 2.2 \$route ...

  4. 声明式导航和编程式导航

    路由跳转的方式,有两种:   1.声明式导航   router-link 是vue-router提供的一个全局组件   router-link 实际上最终会渲染成一个a标签,to属性等价于 href属 ...

  5. Vue 编程式路由导航

    文章目录 router- link的replace属性 编程式路由导航 缓存路由组件 两个新的生命钩子 router- link的replace属性 1.作用:控制路由跳转时操作浏览器历史记录的模式 ...

  6. 编程式路由导航连续跳转出现NavigationDuplicated报错的问题

    1.错误示例 如在多次点击搜索按钮进行编程式路由跳转时控制台会出现报错NavigationDuplicated 2.分析错误产生原因 原因是在vue-router3.1.0之后, 引入了promise ...

  7. vue中路由传参方式之二(this.$router.push进行编程式路由跳转传参)

    this.$router.push进行编程式路由跳转传参 router中路由配置 组件home点击传参 组件homeDetails接受参数 router中路由配置 params第一种传参路由配置 {p ...

  8. 编程式路由导航和withRouter

    编程式路由导航 如果想使用按钮实现路由跳转,有两种形式,可回退和不可回退两种: 由于history被放在props中,可以直接通过this.props.history的push和replace改变 可 ...

  9. Day31_编程式路由导航

    提出需求 1.观察this.$router 上有什么   (push   replace) 2.实现this$router.push查看 1>在message组件里面: 3.实现this$rou ...

最新文章

  1. amazeui学习笔记--css(常用组件4)--关闭按钮Close
  2. 20145227鄢曼君《网络对抗》逆向及Bof基础
  3. SAP ABAP OLE 输出数据到 Excel 无法自动保存的解决
  4. 10 年深度学习顶级论文和代码精选,请务必收藏!
  5. 内联函数的定义可能不止一次
  6. VMware Workstation卸载清理批处理命令
  7. Spring Boot整合Spring Data Redis-提取Redis的链接参数
  8. 吴恩达《机器学习》学习笔记九——神经网络相关(1)
  9. 16.1 Tomcat介绍 16.2 安装jdk 16.3 安装Tomcat
  10. 初二生态系统思维导图_初中生物生态系统知识点思维导图
  11. 浅谈-61850-1
  12. Egret引擎的常用倒计时
  13. 阿里云总线CSB的HTTP调用案例
  14. pytest 接口自动化 从百草园到三味书屋...
  15. 《数学之美》阅读笔记1
  16. 华夏银行签约金融壹账通 借助金融科技转型升级
  17. 51单片机多路独立按键开关程序
  18. 应届生如何获取招聘信息
  19. 互联网行业职位介绍——PM,RD,FE,UE,UI,QA,OP,DBA,BRD,MRD, PRD,FSD等
  20. 【实验6】MPEG音频编码实验

热门文章

  1. Arrays.asList()方法源码解析
  2. Android设计模式与应用场景
  3. 带你走进“呆呆”——纪念软件工程team project的beta版本发布
  4. Java多线程实现接口调用
  5. 软考下午科目——第二章——数据库设计
  6. Windows系统FTP服务器设置
  7. 一键切换手机WIFI代理
  8. redash中文版新特性,表格可视化神器让你相见恨晚
  9. web前端-html网页案例-王者荣耀
  10. postgres中查看函数创建语句