关于Vue中路由配置和router-link的一点补充

本文详细介绍了Vue Router在单页面组件应用中的作用,解析了public/index.html、main.js、App.vue和router/index.js之间的关系。重点讲解了路由配置方式,包括完全加载和即时加载,并给出了多路由布局和地址栏参数传递的示例。同时,提到了路由的命名和懒加载策略,以及如何通过router-link和this.$route.params获取参数。建议采用即时加载提高效率,并采用规范化的路由配置策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前置知识:

1、Vue组件、单页面组件

2、目录结构关联性知识

简介:

将组件和路径映射起来。主要用于单页面组件应用,即:创建了多个单页面组件,可通过vue router来进行类似页面的跳转。因为单页面组件并不是一个真正的页面,需要在调用的时候才被加载(渲染)。

关键知识:

1、public/index.html, src/router/index.js, public/App.vue, public/main.js之间的关系

(1)public/index.html:程序运行的入口,因为程序还是要通过网页才能发布,web服务器才能进行解析。<div id='app'><div>就是内容的渲染区域;

(2)public/main.js:工程项目的入口,全局性配置在此完成;

(3)public/App.vue:所有单页面组件的主router(页面),所有vue都在里进行渲染。注意:经常用到的“渲染”概念,可以这样理解:就是用到了就将相应的HTML,CSS和方法生成到固定的区域。

(4)src/router/index.js:单文件组件和路径的映射配置。

2、Vue中的核心标签(Router可以嵌套,后面再说):

(1):要显示那个单页面组件的内容

(2):在何处将所点击的单页面组件内容进行显示

3、src/router/index.js中两种路由配置方式:

(1)完全加载

import HomeView from '../views/HomeView.vue'

这种方式是完全加载,即:不管有没有使用,都进行组件加载。考虑到效率原因,不建议使用,或仅仅打开默认页面时使用。

(2)即时加载(lazy load)

component: () => import(/* webpackChunkName: "about" */ '../views/AboutView.vue')

component: function (){ const c = import('@/views/ComptUseTest.vue') return c }

上面是es6语法,下面是传统js语法,都行。

即时加载比较推荐,甚至可以完全不用“完全加载”的方式,哪怕默认打开,也可以通过这种即时加载的方式实现。

注意:vue router 既然是做映射,而不是实际的物理地址,理论上可以映射到任意自定义的路径,即:想怎么配就怎么配。但鉴于开发考虑,还是要有一套有规律可循的配置策略,方便团队开发时全体人员的规范和统一。个人建议:

(1)用多个js配置不同的子系统的router;

(2)在index.js做合并,index.js只做合并,不做任何router的具体配置;

(3)路径建议为物理文件地址;

其中:第(2)点处理方式如下:

1)自建.js文件,仅仅编写路由配置的对象数组

2)在index.js处通过如下方式拼接

4、地址栏参数传递

通过地址栏传递参数,是编程过程中常用的参数传递方法之一。在vue中通过以下两个步骤实现:

(1)路由配置

path:'/a1/:id', name:'multi',

(2)router-link配置

<router-link :to="{ name: 'multi', params: { id: 123 }}">多个view</router-link>

(3)获取参数值

this.$route.params.id

5、多路由布局

可以理解为控件的渲染区域,和div类似,支持标准的CSS,故可以通过CSS的float或者absoult将布局在页面的任何位置,甚至重叠。

当布局多个时,要给其属性name进行赋值,不赋值name的未缺省。缺省是接受单个component渲染的。通过router/index.js我们可以有直观感受,举例如下:

这是一个多的路由配置,和下面单个的配置做下对比:

唯一的不同之处是:多配置用的是components,单路由配置是component;

 

<think>嗯,用户问的是routerLinkrouter-link的区别,我需要先回忆一下AngularVue路由指令的不同。首先,Angular使用的是routerLink,而Vue用的是router-link,这两个框架的指令名称很相似,但用法功能可能有差异。 我得先确认两者的基本用途。在Angular里,routerLink是一个属性指令,用于在模板中导航到不同的路由。它通常用在<a>标签或者其他可点击元素上,通过绑定路由路径来实现导航。例如,<a [routerLink]="['/home']">Home</a>。这时候,用户可能会混淆,因为Vue的写法是<router-link to="/home">Home</router-link>,用的是组件形式。 接下来,要比较它们的语法结构。Angular的routerLink通常作为属性绑定,可能需要用方括号或者直接字符串。而Vuerouter-link是一个组件,包裹在标签内,使用to属性指定路径。这时候用户可能会疑惑,为什么一个是指令,另一个是组件,这背后的设计理念是什么? 然后考虑功能特性。Angular的routerLink支持相对路径、参数传递、动态路径等,而Vuerouter-link也有类似功能,比如通过:to绑定对象形式的路径配置。另外,Vuerouter-link在激活状态下会自动添加样式类,而Angular可能需要额外配置routerLinkActive指令来实现类似效果。这一点需要详细说明,避免用户混淆两者的激活状态处理方式。 还需要提到框架的上下文,用户可能同时学习AngularVue,所以需要明确区分它们所属的框架,避免混淆。比如,routerLink是Angular特有的,而router-link属于Vue Router,是Vue.js的一部分。 此外,用户可能想知道在模板中的不同用法,比如Vuerouter-link需要闭合标签,而Angular的routerLink作为属性直接应用在现有标签上。例如,Angular中的按钮或链接使用routerLink,而Vue里必须使用<router-link>组件包裹内容。 最后,总结两者的区别,强调框架不同、语法结构、功能实现方式以及激活状态处理的差异。确保用户能够明确区分,并根据他们使用的框架正确应用相应的路由指令。</think>在Web前端框架中,`routerLink``router-link`是两种不同框架的路由导航指令,区别如下: --- ### 1. **所属框架不同** - **routerLink**:是 **Angular框架** 的路由指令,用于在模板中生成路由链接。 - **router-link**:是 **Vue.js框架** 的路由组件(通常配合Vue Router使用),用于声明式导航。 --- ### 2. **语法结构不同** #### Angular的`routerLink` - 作为**属性指令**(Attribute Directive)使用,绑定到HTML标签的`routerLink`属性。 - 支持动态路径参数,语法为属性绑定格式: ```html <a [routerLink]="['/path']">链接</a> <!-- 带参数 --> <a [routerLink]="['/user', userId]">用户详情</a> ``` #### Vue的`router-link` - 是**组件形式**(Component),需要闭合标签。 - 通过`to`属性指定路径,支持动态绑定: ```html <router-link to="/path">链接</router-link> <!-- 动态路径 --> <router-link :to="{ path: '/user', query: { id: userId }}">用户详情</router-link> ``` --- ### 3. **功能特性差异** | 特性 | Angular的`routerLink` | Vue的`router-link` | |---------------------|-----------------------------------------------|---------------------------------------------| | **激活状态样式** | 需配合`routerLinkActive`指令实现高亮 | 默认自动添加`router-link-active`类名 | | **路由参数传递** | 通过数组语法传递 | 通过对象语法(`params`/`query`)传递 | | **原生事件阻止** | 自动阻止默认行为(如页面刷新) | 自动阻止默认行为 | --- ### 4. **底层实现** - **Angular**的`routerLink`:通过指令监听点击事件,调用路由器的`navigate()`方法。 - **Vue**的`router-link`:渲染为`<a>`标签,通过Vue Router的`push()`方法实现导航。 --- ### 总结 - **核心区别**:`routerLink`是Angular的指令(操作DOM属性),`router-link`是Vue的组件(封装导航逻辑)。 - **选择依据**:根据你使用的框架(Angular选`routerLink`,Vue选`router-link`)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值