Vue2 第二十节 vue-router (一)

1.相关概念理解

2.基本路由

3.嵌套路由(多级路由)

一.相关概念理解

1.1 vue-router的理解

  • 路由:就是一组key-value的对应关系, key为路径,value可能是function或者component
  • 多个路由,需要经过路由器的管理
  • 编程中的路由是为了实现单页面(SPA)应用
  • vue-router:vue的一个插件库,专门用来实现SPA应用

1.2 SPA应用的理解

  • 单页Web应用(single page web application, SPA)
  • 整个应用只有一个完整的页面
  • 点击页面中的导航链接不会刷新页面,只会做页面的局部更新
  • 数据需要通过ajax请求获取

1.3 路由的工作原理

1.4 路由分类

① 后端路由:

1)理解:value是function,用于处理客户端提交的请求

2)工作过程:服务器接收到一个请求时,根据请求路径找到匹配的函数来处理请求,返回响应数据

② 前端路由

1)理解:value 是 component,用于展示页面内容

2)工作过程:当浏览器的路径改变时,对应的组件就会展示

二.基本路由

(1) 安装 vue-router: npm i vue-router@3  vue-router3在vue2中才能使用,最新版本的只能在vue3 中使用

(2) 引入: import VueRouter from "vue-router"

(3) 使用:Vue.use(VueRouter)

(4) 创建路由器,在index.js配置路由规则

 (5) 引入路由器

 (6)点击导航切换路径

 active-class:该元素被激活的样式

 (7)指定组件的呈现位置

 (8)几个注意点

  • 路由组件通常存放在 pages 文件夹中,一般组件通常存放在 components 文件夹中
  • 通过切换,“隐藏”了的路由组件,默认是被销毁掉的,需要的时候再去挂载
  • 每个组件都有自己的$route 属性,里面存储着自己的路由信息
  • 整个应用只有一个router,可以通过组件的$router 属性获得

(9)所有代码

Banner.vue 头部结构

<template><div class="col-xs-offset-2 col-xs-8"><div class="page-header"><h2>Vue Router Demo</h2></div></div>
</template><script>
export default {name: 'Banner'
}
</script><style>
</style>

pages/About.vue

<template><h2>我是About的内容</h2>
</template><script>
export default {name: 'About'
}
</script><style>
</style>

 pages/Home.vue

<template><h2>我是Home的内容</h2>
</template><script>
export default {name: 'Home'
}
</script><style>
</style>

router/index.js

// 该文件专门用于创建整个应用的路由器
import VueRouter from "vue-router"
import About from '../pages/About'
import Home from '../pages/Home'
export default new VueRouter({routes: [{path: '/about',component: About},{path: '/home',component: Home}]
})

 App.vue

<template><div><div class="row"><Banner /></div><div class="row"><div class="col-xs-2 col-xs-offset-2"><div class="list-group"><!-- 原始html中我们使用a标签实现页面的跳转 --><!-- <a class="list-group-item active" href="./about.html">About</a> --><!-- <a class="list-group-item" href="./home.html">Home</a> --><!-- Vue中借助router-link标签实现路由的切换 --><router-link class="list-group-item" active-class="active" to="/about">About</router-link><router-link class="list-group-item" active-class="active" to="/home">Home</router-link></div></div><div class="col-xs-6"><div class="panel"><div class="panel-body"><!-- 指定组件的呈现位置 --><router-view></router-view></div></div></div></div></div>
</template><script>
import Banner from './components/Banner'
export default {name: 'App',components: { Banner }
}
</script>

 main.js

import Vue from 'vue'
import App from './App.vue'
import VueRouter from 'vue-router'
import router from './router'
Vue.config.productionTip = false
Vue.use(VueRouter)
new Vue({el: '#app',render: q => q(App),router: router
})

三.嵌套路由(多级路由)

① 新建两个新的路由组件 

 ② 指定路由规则:配置子路由和路径, 一级路由需要加/ 后面的都不需要加/

 ③ 添加子路由:要加上之前的路径

④ 所有代码

 Home.vue

<template><div><ul class="nav nav-tabs"><li><router-linkclass="list-group-item"active-class="active"to="/home/news">News</router-link></li><li><router-linkclass="list-group-item"active-class="active"to="/home/message">Message</router-link></li></ul><router-view></router-view></div>
</template><script>
export default {name: 'Home'
}
</script><style>
</style>

router/index.js

// 该文件专门用于创建整个应用的路由器
import VueRouter from "vue-router"
import About from '../pages/About'
import Home from '../pages/Home'
import News from '../pages/News'
import Message from '../pages/Message'
export default new VueRouter({routes: [{path: '/about',component: About},{path: '/home',component: Home,children: [{// 不要加/path: 'news',component: News},{// 不要加/path: 'message',component: Message}]}]
})

Message.vue

<template><div><ul><li><a href="/message1">message001</a>&nbsp;&nbsp;</li><li><a href="/message2">message002</a>&nbsp;&nbsp;</li><li><a href="/message/3">message003</a>&nbsp;&nbsp;</li></ul></div>
</template><script>
export default {name: 'Message'
}
</script><style>
</style>

News.vue

<template><ul><li>news001</li><li>news002</li><li>news003</li></ul>
</template><script>
export default {name: 'News'
}
</script><style>
</style>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/52038.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

熟练掌握ChatGPT解决复杂问题——学会提问

目录 引言 一、5W1H分析法 1. 简单的问题&#xff08;what、where、when、who&#xff09; 2.复杂的问题&#xff08;why、how&#xff09; 2.1 为什么&#xff08;Why&#xff09;——原因 2.2 方式 &#xff08;How&#xff09;——如何 二、如何提问得到更高质量的答案…

MySQL进阶--存储引擎

目录 一、简介二、什么是存储引擎&#xff1f;三、MySQL中常用的存储引擎1.InnoDB2.MyISAM3.Memory4.三种存储引擎对比 四、存储引擎的选择PS: 一、简介 本文的内容讲的是MySQL中的存储引擎的相关知识&#xff0c;初步认识MySQL中的存储引擎及各引擎的特点~ 二、什么是存储引…

将有序链表转换为二叉搜索树

题目&#xff1a; 给定一个单链表的头节点 head &#xff0c;其中的元素 按升序排序 &#xff0c;将其转换为高度平衡的二叉搜索树。 本题中&#xff0c;一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差不超过 1。 输入: head [-10,-3,0,5,9] 输出: [0,-3…

Python:Spider爬虫工程化入门到进阶(1)创建Scrapy爬虫项目

Python&#xff1a;Spider爬虫工程化入门到进阶系列: Python&#xff1a;Spider爬虫工程化入门到进阶&#xff08;1&#xff09;创建Scrapy爬虫项目Python&#xff1a;Spider爬虫工程化入门到进阶&#xff08;2&#xff09;使用Spider Admin Pro管理scrapy爬虫项目 本文通过简…

2023牛客暑期多校训练营6 A-Tree (kruskal重构树))

文章目录 题目大意题解参考代码 题目大意 ( 0 ≤ a i ≤ 1 ) , ( 1 ≤ c o s t i ≤ 1 0 9 ) (0\leq a_i\leq 1),(1 \leq cost_i\leq 10^9) (0≤ai​≤1),(1≤costi​≤109) 题解 提供一种新的算法&#xff0c;kruskal重构树。 该算法重新构树&#xff0c;按边权排序每一条边…

W6100-EVB-PICO做DNS Client进行域名解析(四)

前言 在上一章节中我们用W6100-EVB-PICO通过dhcp获取ip地址&#xff08;网关&#xff0c;子网掩码&#xff0c;dns服务器&#xff09;等信息&#xff0c;给我们的开发板配置网络信息&#xff0c;成功的接入网络中&#xff0c;那么本章将教大家如何让我们的开发板进行DNS域名解…

uniapp 返回上一页并刷新

如要刷新的是mine页面 在/pages/mine/improveInfo页面修改信息&#xff0c;点击保存后跳转到个人中心&#xff08;/pages/mine/index&#xff09;页面并刷新更新数据 点击保存按钮时执行以下代码&#xff1a; wx.switchTab({url: /pages/mine/index }) // 页面重载 let pages …

PDM系统解密:数据管理的利器

在当今数字化时代&#xff0c;数据管理对企业的重要性不言而喻。而PDM系统作为一款强大的数字化工具&#xff0c;正扮演着企业数据管理的利器角色。让我们一同探索PDM系统的功能科普&#xff0c;了解它是如何助力企业高效管理数据&#xff0c;实现卓越发展的。 一、数据中心化存…

VR 变电站事故追忆反演——正泰电力携手图扑

VR(Virtual Reality&#xff0c;虚拟现实)技术作为近年来快速发展的一项新技术&#xff0c;具有广泛的应用前景&#xff0c;支持融合人工智能、机器学习、大数据等技术&#xff0c;实现更加智能化、个性化的应用。在电力能源领域&#xff0c;VR 技术在高性能计算机和专有设备支…

【蓝桥杯备考资料】如何进入国赛?

目录 写在前面注意事项数组、字符串处理BigInteger日期问题DFS 2013年真题Java B组世纪末的星期马虎的算式振兴中华黄金连分数有理数类&#xff08;填空题&#xff09;三部排序&#xff08;填空题&#xff09;错误票据幸运数字带分数连号区间数 2014年真题蓝桥杯Java B组03猜字…

OpenGL ES 3.0 PBO Pixel Buffer Object 像素缓冲区对象

该原创文章首发于微信公众号:字节流动 PBO 是什么 OpenGL PBO(Pixel Buffer Object),被称为像素缓冲区对象,主要被用于异步像素传输操作。PBO 仅用于执行像素传输,不连接到纹理,且与 FBO (帧缓冲区对象)无关。 OpenGL PBO(像素缓冲区对象) 类似于 VBO(顶点缓冲区…

iMX6ULL驱动开发 | OLED显示屏SPI驱动实现(SH1106,ssd1306)

周日业余时间太无聊&#xff0c;又不喜欢玩游戏&#xff0c;大家的兴趣爱好都是啥&#xff1f;我觉得敲代码也是一种兴趣爱好。正巧手边有一块儿0.96寸的OLED显示屏&#xff0c;一直在吃灰&#xff0c;何不把玩一把&#xff1f;于是说干就干&#xff0c;最后在我的imax6ul的lin…