0

0

vue router: dynamic route matching动态路由匹配

不言

不言

发布时间:2018-07-09 13:50:30

|

2320人浏览过

|

来源于php中文网

原创

这篇文章主要介绍了关于vue router: dynamic route matching动态路由匹配,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下

最近在把几个Vue单页面应用合并升级成多页面应用,减少代码冗余和重复打包。由于是在原有的Django结构和Vue-cli配置里塞东西,所以会有很多为了配合Django而产生的配置更改,不具有普遍的移植性,仅供参考。

坑会慢慢填的,先从路由开始。主要思路就是一个入口对应一个单页面应用,每个单页面应用都是独立的,互相之间不存在路由跳转,而单页面应用中存在多个组件之间的路由跳转,因此每个单页面应用都有自己的路由配置。

动态路由匹配,就是把某种模式匹配到的所有路由全部映射到同个组件。

根据官方文档给出的实例,例如我们有一个RequestList组件包含了所有的Request的基本信息,点击某个Request的ID可跳转查看该Request的详细信息,对于ID不同的所有Request都可以用RequestDetail组件来渲染,可以通过“动态路径参数(Dynamic Segment)”来实现效果。
这样/demo/request/1 和、/demo/request/2都会映射到相同的路由,参数通过路由传递给组件RequestDetail,可通过this.$route.params访问到传递来的参数,参数可能是一个,也可能是多个。

立即学习前端免费学习笔记(深入)”;

import RequestList from '@/components/RequestList';
import RequestDetail from '@/components/RequestDetail';

export default {
  base: '/demo/',
  mode: 'history',
  linkActiveClass: 'active',
  routes: [
    {
      path: '/',
      name: 'requestList',
      component: RequestList,
    },
    {
      path: '/request/:requestId',
      name: 'requestDetail',
      component: RequestDetail,
      props: props, //路由传参
    },
  ],
};

有时候也可以配置成带查询参数的路由,但个人觉得这样的路由/demo/request?requestId=1长得不是很美观,而且把参数暴露给用户了。

{
    path: '/request',
    name: 'requestDetail',
    component: RequestDetail,
    props: route => ({ requestId: route.query.requestId }), //路由传参
},

这周在多页面应用中加了一个新的单页面应用,配置了动态路由,在dev开发模式下却只能匹配到根路由/,一直cannot get子路由,什么都渲染不出来。开始也没有找到合适的关键词去搜索相关issue,折腾了大半天终于发现有人也遇到了同样的问题why-does-vue-router-webpack-dev-server-shows-cannot-get-path-on-page-refresh。

It turns out it was a bug in the Vue webpack template on Windows

Flowith
Flowith

一款GPT4驱动的节点式 AI 创作工具

下载

Ok, fine :)

其实这个Bug在现在的Vue webpack template里已经解决了,在webpack.dev.conf.js的devServer 配置中有historyApiFallback. 当我们使用HTML5 History API的时候,index.html会在404找不到资源的时候被返回,这里的index.html是什么?

historyApiFallback: {
    rewrites: [
        { from: /.*/, to: path.posix.join(config.dev.assetsPublicPath, 'index.html') },
    ],
},

在dev开发模式下,其实是相当于在本地起了一台虚拟的服务器,一个单页面应用对应一个html模板文件,入口对应的所有相关组件的js css代码都会被注入到这个html模板文件里,所以我们的路由配置也需要到相应的模板文件里的js代码去解析、匹配。但是由于我的多页面应用配置,当我在地址栏输入/demo/request/1,其实是找不到匹配的资源的,需要返回到相对应的html模板文件中去,这也和你dev配置的模板文件路径有关。

devServer: {
  historyApiFallback: {
      rewrites: [
        { from: /^\/demo/, to: path.posix.join(config.dev.assetsPublicPath, 'demo/index.html') },
        { from: /^\/test/, to: path.posix.join(config.dev.assetsPublicPath, 'test/index.html') },
      ],
  },
}

很多前端萌新在刚接触Vue的时候,都会选择用Vue-cli去搭项目,模板的配置在一定程度上可配置也很完整,足够满足一般单页面应用的需求,确实省事。但是前端早已不是只注重代码,而是关注到整个项目架构的设计,一个好的结构相当于成功了一半,后续开发流程会非常流畅。

前端并没有外行想象的那么简单,虽然也没有很复杂,给自己的定位是前端架构师,而不是代码的搬运工。所以非常建议想要在前端深入的各位,把Vue-cli的Webpack配置解读理顺(React同理),再把webpack的文档完整撸一遍,基本可以把前端工程化的代码分割(Code Splitting)和懒加载(Lazy Loading)理解大半了,然后尝试自己写配置,设计架构。

以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!

相关推荐:

自制vue组件通信插件之用mixin写插件

配置|electron+vue+ts+sqlite的配置方法

相关文章

路由优化大师
路由优化大师

路由优化大师是一款及简单的路由器设置管理软件,其主要功能是一键设置优化路由、屏广告、防蹭网、路由器全面检测及高级设置等,有需要的小伙伴快来保存下载体验吧!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
Python Web 框架 Django 深度开发
Python Web 框架 Django 深度开发

本专题系统讲解 Python Django 框架的核心功能与进阶开发技巧,包括 Django 项目结构、数据库模型与迁移、视图与模板渲染、表单与认证管理、RESTful API 开发、Django 中间件与缓存优化、部署与性能调优。通过实战案例,帮助学习者掌握 使用 Django 快速构建功能全面的 Web 应用与全栈开发能力。

155

2026.02.04

html5动画制作有哪些制作方法
html5动画制作有哪些制作方法

html5动画制作方法有使用CSS3动画、使用JavaScript动画库、使用HTML5 Canvas等。想了解更多html5动画制作方法相关内容,可以阅读本专题下面的文章。

544

2023.10.23

HTML与HTML5的区别
HTML与HTML5的区别

HTML与HTML5的区别:1、html5支持矢量图形,html本身不支持;2、html5中可临时存储数据,html不行;3、html5新增了许多控件;4、html本身不支持音频和视频,html5支持;5、html无法处理不准确的语法,html5能够处理等等。想了解更多HTML与HTML5的相关内容,可以阅读本专题下面的文章。

467

2024.03.06

html5从入门到精通汇总
html5从入门到精通汇总

想系统掌握HTML5开发?本合集精选全网优质学习资源,涵盖免费教程、实战项目、视频课程与权威电子书,从基础语法到高级特性(Canvas、本地存储、响应式布局等)一应俱全,适合零基础小白到进阶开发者,助你高效入门并精通HTML5前端开发。

265

2025.12.30

html5新老标签汇总
html5新老标签汇总

HTML5在2026年持续优化网页语义化与交互体验,不仅引入了如<header>、<nav>、<article>、<section>、<aside>、<footer>等结构化标签,还新增了<video>、<audio>、<canvas>、<figure>、<time>、<mark>等增强多媒体与

223

2025.12.30

html5空格代码怎么写
html5空格代码怎么写

在HTML5中,空格不能直接通过键盘空格键实现,需使用特定代码。本合集详解常用空格写法:&nbsp;(不间断空格)、&ensp;(半个中文空格)、&emsp;(一个中文空格)及CSS的white-space属性等方法,帮助开发者精准控制页面排版,避免因空格失效导致布局错乱,适用于新手入门与实战参考。

104

2025.12.30

html5怎么做网站教程
html5怎么做网站教程

想从零开始学做网站?这份《HTML5怎么做网站教程》合集专为新手打造!涵盖HTML5基础语法、页面结构搭建、表单与多媒体嵌入、响应式布局及与CSS3/JavaScript协同开发等核心内容。无需编程基础,手把手教你用纯HTML5创建美观、兼容、移动端友好的现代网页。附实战案例+代码模板,快速上手,轻松迈出Web开发第一步!

165

2025.12.31

HTML5建模教程
HTML5建模教程

想快速掌握HTML5模板搭建?本合集汇集实用HTML5建模教程,从零基础入门到实战开发全覆盖!内容涵盖响应式布局、语义化标签、Canvas绘图、表单验证及移动端适配等核心技能,提供可直接复用的模板结构与代码示例。无需复杂配置,助你高效构建现代网页,轻松上手前端开发!

50

2025.12.31

PHP高性能API设计与Laravel服务架构实践
PHP高性能API设计与Laravel服务架构实践

本专题围绕 PHP 在现代 Web 后端开发中的高性能实践展开,重点讲解基于 Laravel 框架构建可扩展 API 服务的核心方法。内容涵盖路由与中间件机制、服务容器与依赖注入、接口版本管理、缓存策略设计以及队列异步处理方案。同时结合高并发场景,深入分析性能瓶颈定位与优化思路,帮助开发者构建稳定、高效、易维护的 PHP 后端服务体系。

4

2026.03.04

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Vue 教程
Vue 教程

共42课时 | 9.2万人学习

Vue3.x 工具篇--十天技能课堂
Vue3.x 工具篇--十天技能课堂

共26课时 | 1.6万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号