Python 实战 · 从 0 到 1 搭建直播视频平台
Barry
某上市公司技术研发总监
3717 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 42 讲
Python 实战 · 从 0 到 1 搭建直播视频平台
15
15
1.0x
00:00/00:00
登录|注册

07|路由设计:如何借助Vue Router设计出更合理的路由?

你好,我是 Barry。
上节课我留过一个思考题,如果在我们平台中有一些公共的展示的内容,例如平台的 Icon,我们希望在每一个页面都可以看到它,并且点击可以跳回首页,要怎么实现呢?
比较常见的一个做法就是通过路由来管理。实际开发中,一个企业级项目的页面众多,每一个页面都需要有对应的路由地址,为了保证所有链接可用,自然需要统一管理起来。
路由的配置管理在 Vue 框架开发中非常重要,是我们完成后续各功能模块开发的前提。因为我们需要提前配置好路由,才能控制网址和现实页面的对应关系。
这节课,我们就一起动手实践,最后给我们的视频平台配置路由。在动手之前,我们先简单了解一下 Vue 的官方路由。

初识 Vue Router

Vue 的官方路由是 Vue Router ,在第 4 节课,我们也了解到过它能帮我们在 Vue 框架中轻松快捷地配置路由。
我们先来认识一下 Vue Router 中两个至关重要的标签。
1.router-link:路由的链接标签,to 属性是将要跳转的路由地址(即我们预先配置好的路由地址),它的用法似于 HTML 的 <a> 标签。
2.router-view:路由组件出口,相当于用来显示路由地址对应组件的 HTML<div> 标签。
当我们在页面要点击链接跳转到项目中的页面时,链接就要用到 router-link 标签。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

Vue Router是Vue.js框架中的重要组件,本文详细介绍了如何设计更合理的路由,并通过实例和代码演示了Vue Router的基本配置和常见功能。文章首先介绍了Vue Router的重要标签router-link和router-view,并提供了它们的用法示例。接着,通过实操练习演示了在Vue项目中如何使用Vue Router配置路由,包括安装Vue Router的依赖包、定义路由配置文件、将路由绑定到Vue实例上以及在App.vue中加上router-view标签。此外,还介绍了带参数的动态路由匹配、重定向、别名和嵌套路由的配置方法,以及懒加载的实现方式。另外,还介绍了常见的Router API,包括路由跳转、回退功能以及组件的路由钩子函数和全局路由钩子函数。总的来说,本文为读者提供了设计合理路由的实用指南,使读者能够快速了解Vue Router的功能和属性,以便在实际项目中灵活应用。文章还提出了思考题,鼓励读者在实践中尝试整合其他依赖,如Vue常用的UI组件库Element-UI。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Python 实战 · 从 0 到 1 搭建直播视频平台》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(19)

  • 最新
  • 精选
  • 🤬
    有些样式和内容不是很明确,能不能放一下代码?

    作者回复: 可以的,本周就会上传相应的代码,请关注专栏信息

    2023-05-08归属地:广东
    2
  • coderHOW
    跟着教程实操一边确实学习到很多 有几点总结一下, 1. vue-router3.x版本和4.x版本的路由配置会有一些差别,如果之前用vue-cli配置是3.x版本的可以按照 https://v3.router.vuejs.org/zh/guide/#javascript 这个来,如果是冲重新安装的 npm install vue-router@4,按照 https://router.vuejs.org/zh/guide/ 来配置 2. 升级 babel7.x 先把 package.json babel 开头的依赖删掉,再删掉 node_modules 然后 package.json 加上: "@babel/cli": "^7.21.5", "@babel/core": "^7.22.1", "@babel/plugin-proposal-class-properties": "^7.18.6", "@babel/plugin-transform-classes": "^7.21.0", "@babel/plugin-transform-runtime": "^7.22.4", "@babel/preset-env": "^7.22.4", "babel-loader": "^8.0.4", 再 npm install 重新安装一下 然后修改.babelrc为: { "presets": [ "@babel/preset-env" ], "plugins": [ "@babel/plugin-transform-runtime", "@babel/plugin-proposal-class-properties", "@babel/plugin-transform-classes" ] }

    作者回复: 很开心看到你的收获,以及你的认可,也感谢你学习过程中的分享,我们一起加油,每天进步一点点。

    2023-06-11归属地:广东
    1
  • 我是访问 localhost:8080/#/about 才出现的页面 其实我现在也搞不清楚前端这些东西了

    作者回复: 我可以帮你梳理一个思路,这样会对你有帮助: 1、如果我们想在浏览器访问项目中的页面,那我们就需要创建路由,这样才可以被访问到。 2、那我们在配置路由的时候,我们需要有对应的组建文件,因为你发现在路由中是要写明对应组件的文件路径的。 3、这时候就要关注你组件的内容了,也就是页面开发的过程,要展示什么?要有哪些功能?以及做那些页面关联,结合着以上的问题,你就把页面开发出来了。 以这样的一个思维去理解,我相信会对你有帮助。只要我们链路清晰,万变不离其中。继续加油!!!

    2023-05-25归属地:云南
    1
  • 功夫熊猫
    老师你好,安装vue-router@4的时候会报错,看起来是不是router 4的版本yao 依赖vue 3.2.0以上版本,但是前边一路教程下来,安装下来的应该是vue2.9.6版本 npm ERR! code ERESOLVE npm ERR! ERESOLVE unable to resolve dependency tree npm ERR! npm ERR! While resolving: video@1.0.0 npm ERR! Found: vue@2.7.15 npm ERR! node_modules/vue npm ERR! vue@"^2.5.2" from the root project npm ERR! npm ERR! Could not resolve dependency: npm ERR! peer vue@"^3.2.0" from vue-router@4.2.5 npm ERR! node_modules/vue-router npm ERR! vue-router@"4" from the root project npm ERR! npm ERR! Fix the upstream dependency conflict, or retry

    作者回复: 正常如果你直接以cli创建的方式,会自动生成相应的router,如果单独配置会出现不匹配的情况。建议按cli的安装方式进行操作。

    2023-10-27归属地:北京
  • 功夫熊猫
    为啥课本里描述的代码和代码库的代码完全不同,还有人在管理吗?课件里的引入两个组件啥意思,也没找到home.vue,代码库的代码也运行不同,不知道是不是太久了,版本问题导致都失效了。 //引入两个自己定义好的组件 import Home from '../pages/Home.vue' import About from '../pages/Home.vue'

    作者回复: 同学你好,是这样,Home.vue文件是作为index.vue的测试文件,内部代码实现一样,可以直接删除,如果出现找不到文件的情况,可直接删除。

    2023-10-23归属地:北京
  • 明仔的阳光午后
    懒加载的写法二 `ComponentA:resolve=>(['需要加载的路由的地址',resolve])`没起作用,改成`ComponentA:resolve=>require(['需要加载的路由的地址',resolve])`之后才起作用

    作者回复: 同学你的写法是正确的,这个在课程中的代码就是这样写的,同学,在最后的src/router/index.js 配置路由文件内。

    2023-08-29归属地:福建
  • Geek_88cc02
    老师,有代码地址吗?叙述过于抽象了 about组件那些都么有,看不懂 我们真没基础

    作者回复: 你好,About组件是这样,为什么我没有放了,因为它就是一个单独的页面组建,组件的内容我们是不用关注的,你可以直接在你的项目中创建一个about.vue文件就可以了,这里我们重点关注就是在页面跳转过程中实现就可以,重点在router的应用方法,是这样的关系,所以我没有放about的代码,它不影响我们对路由的学习,如果还有不解之处,可以再回评。

    2023-06-10归属地:广东
  • Geek_88cc02
    Home 组件 About 组件代码没有讲吧?

    作者回复: 同学,这个我在上一个问题给回复了,About组件你完全可以创建一个.vue文件,我们不用关注组件内的内容,主要是通过路由操作可以实现路由切换,从而展示对应的页面信息就可以。

    2023-06-10归属地:广东
  • 阿望(tom)
    老师,你的代码Layout 里边 下边 css 用了 less, 但是在文中还有你的git代码里边 没有提到需要安装这个扩展,于是我这边搜了一下 ,按照文中给出的搭建方法,less-loader 还只能安装@5.0.0版本,,另外在 编译过程中 项目并不能100%编译 ,提示 app.vue {parse:"babylon"} 被废弃了 需要换成 {parser::"balbel"} 请问这2个问题,能讲解下吗

    作者回复: 问题我给解答一下,第一个问题,使用 <style lang="less" scoped> 主要来定义组件内的样式,使用 scoped 属性可以将样式限制在当前组件的作用域内,从而避免全局样式冲突,这个使用非必需哈,解决方法我在评论区做了集中回复,你可以查看一下。 第二个问题:关于JavaScript语法解析器的问题。在JavaScript中,解析器负责将源代码转换为可执行的代码。具体而言,{parse:"babylon"}和{parser:"babel"}是指两种不同的解析器,即Babylon和Babel。这两个解析器都可以解析JavaScript代码,但是Babylon是旧版的解析器,已经被废弃不再维护,而Babel是新一代的解析器,使用更广泛的工具集,更加灵活和强大。 因此,意味着你需要将解析器从Babylon替换为Babel。 要解决这个问题,你可以尝试更新你的工具链或者使用已经集成了Babel的工具。如果你正在使用npm或yarn等包管理器,你可以通过运行以下命令安装Babel: npm install --save-dev @babel/core @babel/cli @babel/preset-env 然后,在你的项目根目录中创建一个名为.babelrc的文件,内容如下: { "presets": [ "@babel/preset-env" ] } 这将告诉Babel使用env preset来转换你的代码。

    2023-05-31归属地:阿联酋
  • Geek_840593
    ERROR Failed to compile with 1 errors 18:14:14 error in ./src/components/PC/MyHeader.vue Module build failed: .book-header { border-bottom: 1px solid @border-color; ^ Variable @border-color is undefined in /Users/guoyan/my-project/src/components/PC/MyHeader.vue (line 191, column 27) @ ./node_modules/.store/vue-style-loader@4.1.3/node_modules/vue-style-loader!./node_modules/.store/css-loader@3.2.0/node_modules/css-loader/dist/cjs.js?{"sourceMap":true}!./node_modules/vue-loader/lib/style-compiler?{"vue":true,"id":"data-v-72e0c896","scoped":true,"hasInlineConfig":false}!./node_modules/.store/less-loader@5.0.0/node_modules/less-loader/dist/cjs.js?{"sourceMap":true}!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./src/components/PC/MyHeader.vue 4:14-463 15:3-20:5 16:22-471 @ ./src/components/PC/MyHeader.vue @ ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib/selector.js?type=script&index=0!./src/Layout/Layout.vue @ ./src/Layout/Layout.vue @ ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib/selector.js?type=script&index=0!./src/App.vue @ ./src/App.vue @ ./src/main.js @ multi (webpack)-dev-server/client?http://localhost:8080 webpack/hot/dev-server ./src/main.js

    作者回复: 目前看这个错误的提示是变量 @border-color 在 MyHeader.vue 组件的第 191 行被使用,但是它没有被正确地定义或者引入。 解决这个问题你可以尝试先确认是否在组件的样式中定义了 @border-color 变量,如果没有,则需要引入该变量或者手动定义它。如果已经定义了该变量,则需要检查它的值是否正确。你可以尝试先来解决一下,如果还有问题可以把具体的代码发出来看看,希望可以帮助到你。

    2023-05-25归属地:重庆
    8
收起评论
显示
设置
留言
19
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部