路由、插槽

news2024/11/24 16:06:48

路由

前端路由:Hash地址(url中#后面的部分)与组件之间的对应关系
页面效果:在浏览器中访问不同的Hash地址时,会显示不同的组件
SPA项目(单页面应用程序,就是Vue项目,最后所有模板都展示在一个html上)
在这里插入图片描述

vue路由(vue-router)

1.安装

Vue2要安装3版本的vue-router,vue3使用版本4
npm i vue-router@3.5.2   (这个版本好用)

1.创建路由模块(src/router/index.js)(在创建新项目时可以直接选中配置)

//1.导入所需模块
import Vue from 'vue'
import VueRouter from 'vue-router'
//2.调用Vue.use()函数,将VueRouter安装为Vue插件
Vue.use(VueRouter)
//3.配置路由规则
const routes=[]
//4.创建路由的实例对象
const router=new VueRouter({
//路由的配置
routes
})
//5.导出路由的实例对象
export default router

1.创建并挂载路由模块(main.js)

import router from '@/router'
new Vue({
render:h=>h(App),
//挂载路由模块
router
}).$mount('#app')

在这里插入图片描述

以上便是vue-router的基础配置
浏览器访问localhost:8080,如果路径后自动添加了/#/,则基本上配置成功

使用路由的核心步骤

1.配置路由规则(router/index.js中)
2.设置路由出口(<router-view/>)(在哪里展示组件,在那里放它)
3.设置超链接(<router-link to="/discover">发现音乐</router-link>)

在这里插入图片描述
组件的变化过程:点击超链接–>地址栏变化–>匹配路由规则地址–>在出口处展示对应组件

一级路由

直接写到routes数组中的路由规则,级别最大,叫做一级路由
一级路由只能展示在App.vue中
在这里插入图片描述

嵌套路由

在一级路由组件中嵌套子规则
在这里插入图片描述

嵌套子规则
const routes = [
    { path: '/find', component: Find,
    				//二级路由的path可以不写斜线,二级路由的访问地址会和一级路由拼接
    childeren:[{path:'xxx',component:yyy},{...},{....}] },
    { path: '/my', component: My },
    { path: '/friend', component: Friend },]

接下来二级路由的出口放置在对应的子组件中(一级路由出口放置在App.vue中)

子组件的<router-link>写path时要显示出来父子关系
<router-link to="find/xxx"></router-link>
路由传参(可以用参数来发送AJAX请求)

两种方式

/xxx/xxx?id=3&name=xxx-----查询参数传参
/xxx/xxx/3/xxx --------动态路由传参
查询参数传参

在当前页面中传参(vue中,要在属性中使用变量,需要在属性前加:,否则传递的是字符串)

套路:
1.超链接挂好合适的参数(超链接不再跳转,在本页面实现)
2.跳转后使用$route.query.参数名 获取值

在这里插入图片描述

动态路由传参
套路:
1.超链接挂好合适的参数
	//                                必须传id                             //id后加?表示id可有可无
2.路由规则改为{path:'/xxx/:id',compo...}或者{path:'/xxx/:id?',compo...}
3.跳转后,组件中使用$route.params.id获取值

重定向

在routes中修改
使用场景:页面hash地址是xx的情况,你希望跳转到yy地址
比如,页面打开后,hash地址是/,我希望跳转到/discover

{path:'/',redirect:'/discover'}
路由的模式

两种模式:Hash模式(默认)和历史模式
配好路由规则的时候,url默认增加#为hash模式
历史默认的url没有#
在这里插入图片描述

404处理

先准备一个NotFound组件
再在routes最后中增加一个规则

*为通配符,如果之前的理由规则没有匹配上(优先和别的规则匹配),则最后匹配到通配符时展示*
{path:'*',component:NotFound}
连接高亮

router-link也会被解析成a标签,同时会给当前访问的超链接自动加两个类名(用来实现排它效果)(根据hash地址来添加类)

编程式导航(用js实现超链接跳转)

location.herf=‘./xxxx’
在这里插入图片描述
this.$router.push()

//写法一(直接写字符串)
this.$router.push('完整路由地址(hash地址)')
//写法二(传入对象,使用name进行跳转)
//需要给routes规则添加name {name:'php',path:'toplist/:name?',component:..}
this.$router.push(
name:'php',//路由规则的name值
params:{ //传递的动态路由参数
name:'xx'
}
)
//写法三(传入对象,使用path进行跳转)(有问题不要用)

this.$nextTick()

methods方法中数据更新(数据是同步更新),页面不会立即更新(页面是异步更新,避免导致多次渲染,浪费不必要的性能),会在下次循环的时候更新页面
语法:
this.$nextTick(()=>{
//数据更新后,等DOM也更新后,这个函数执行
})

使用场景:
1.如果想要在修改数据后立即得到更新后的DOM结构,可以使用this. n e x t T i c k ( ) 2. 在 c r e a t e d 声明周期中进行 D O M 操作 ( 用的少,最早进行 D O M 操作的函数是 m o u n t e d ( ) ,想要在 c r e a t e d ( ) 进行 D O M 操作要借助 t h i s . nextTick() 2.在created声明周期中进行DOM操作(用的少,最早进行DOM操作的函数是mounted(),想要在created()进行DOM操作要借助this. nextTick()2.created声明周期中进行DOM操作(用的少,最早进行DOM操作的函数是mounted(),想要在created()进行DOM操作要借助this.nextTick())

插槽 ( <slot><\slot>)

组件通信父传子用来传数据,插槽用来传HTML结构

作用&场景

1.在封装组件的时候,将可变的结构设计为插槽(<slot><\slot>占位)
2.使用上述组件的时候,可以按需为插槽提供自定义的结构,以达到复用组件且高度自定的结果

比如,封装一个对话框组件,对话框的内容可能是一句话,可能是一个表单,可能是一个表格
所以,对话框的内容不能写死,这时,就把对话框的内容涉及为插槽。使用这个组件时,为插槽提供需要的内容

在这里插入图片描述

具名插槽(具有名字的插槽)

如果子组件中有多个插槽,父组件传递html结构时,将会给每个插槽都传递一份
为了提供的HTML结构能放入正确的插槽,需要给插槽加名字进行区分

子组件
<slot name="title"></slot>
<slot></slot> //没有名字的插槽有一个默认的名字name="default"
父组件
将传递给插槽的结构先用template结构包裹起来,使用v-slot:名字。找到对应的slot,没有被template包裹的html结构都传给默认插槽
<template v-slot:title>
//v-slot:title 可以简写为#title
<h3>传递给插槽的内容<h3>
</template>

作用域插槽(只能在template内部使用)

有些时候,子组件在定义插槽的时候,需要向使用者(父组件)传递一些数据,这样的插槽叫作用域插槽
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

VUE3——生命周期

Vue3.0中可以继续使用Vue2.x中的生命周期钩子&#xff0c;但有有两个被更名&#xff1a; beforeDestroy改名为 beforeUnmountdestroyed改名为 unmounted Vue3.0也提供了 Composition API 形式的生命周期钩子&#xff0c;与Vue2.x中钩子对应关系如下&#xff1a; beforeCreate&g…

3D Gaussian Splatting Linux端部署指南(含Linux可视化)

3D Gaussian Splatting Linux端部署指南 目录 项目地址 部署记录 11. Linux端在线远程可视化训练进程 准备自己的数据 SIBR_remoteGaussian在线远程可视化 补充&#xff1a;sibr_3Dgaussian离线可视化训练好的模型 朋友浩哥说环境是最难配的&#xff0c;配好环境&#x…

Tinymce富文本编辑器二次开发电子病历时解决的bug

前言 本文是在Tinymce富文本编辑器添加自定义toolbar&#xff0c;二级菜单&#xff0c;自定义表单&#xff0c;签名的基础之上进行一些bug记录&#xff0c;功能添加&#xff0c;以及模版的应用和打印 项目描述 建立电子病历模版—录入&#xff08;电子病历模版和电子病历打印…

运筹学基础(三):求解整数规划的切平面法(cutting plane method)

文章目录 算法思想一个例子参考文档 算法思想 先将整数规划问题松弛为线性规划问题&#xff0c;然后割掉线性规划问题可行域的一部分&#xff08;只包含非整数解&#xff09;&#xff0c;使得线性规划问题的最优解在原整数规划问题的可行域某顶点上取得。 因此&#xff0c;割平…

Spring之BeanFactoryPostProcessor详解

目录 功能与作用 使用案例 spring提供的常见BeanFactoryPostProcessor 1.EventListenerMethodProcessor 2.BeanDefinitionRegistryPostProcessor 功能与作用 使用案例 spring提供的唯一BeanDefinitionRegistryPostProcessor 总结 功能与作用 参考BeanFactoryPostProce…

如何插入LinK3D、CSF、BALM来直接插入各个SLAM框架中

0. 简介 LinK3D、CSF、BALM这几个都是非常方便去插入到激光SLAM框架的。这里我们会分别从多个角度来介绍如何将每个框架插入到SLAM框架中 1. LinK3D:三维LiDAR点云的线性关键点表示 LinK3D的核心思想和基于我们的LinK3D的两个LiDAR扫描的匹配结果。绿色线是有效匹配。当前关…

C++ 中的 vector 的模拟实现【代码纯享】

文章目录 C 中的 vector 模拟实现1. vector 的基本概念2. vector 的基本操作3. vector 的模拟实现4.代码纯享5. 总结 C 中的 vector 模拟实现 在 C 中&#xff0c;vector 是一个非常重要的容器&#xff0c;它提供了动态数组的功能。在本篇博客中&#xff0c;我们将尝试模拟实现…

搭建电商网站外贸网站用API接口可以实现哪些功能(天猫API接口|京东API接口)

在电商领域&#xff0c;API接口可以实现多种功能&#xff0c;起到连接内外部系统及优化电商业务流程等多种作用&#xff0c;从而来提高电商企业的运营效率。 具体来看&#xff0c;API接口接入可以用来&#xff1a; 商品管理&#xff1a; API接口能够用来获取商品详情等&#…

OR- M406A固态继电器SSR光耦,对标替代TLP170A/ASSR-1218等

低工作电流 低导通电阻 高隔离电压 400V , 600V 输出耐受电压 工业温度范围&#xff1a;-40 to 85℃ 特征 高输入输出隔离电压 &#xff08; Viso 3&#xff0c;750Vrms &#xff09; 采用 400V 和 600V 负载电压系列 常开信号极点信号投射继电器 低工作电流 低…

Redis安装-Docker

安装redis的docker容器 1、创建redis挂载目录 mkdir -p /liuchaoxu/redis/{data,conf}2、复制配置文件 在 /liuchaoxu/redis/conf 目录中创建文件 redis.conf&#xff0c;文件从 redis-6.2.7.tar.gz 中解压获取 修改默认配置(从上至下依次)&#xff1a; #bind 127.0.0.1 …

小明的背包-dp_python

用户登录 动态规划的思想是自底向上&#xff0c;先求局部最优解然后求全局最优解。 dp[i][j]代表的是当前状态物品的数量以及背包的容量。 N, V map(int,input().split()) dp [[0 for _ in range(V1)] for _ in range(N1)]for i in range(1,N1):v, w map(int,input().split(…

CSS样式-字体类型,文本对齐,外观修饰,文本缩进,文本行间距,外部引用css样式

字体类型和字体属性调整 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Css字体类型大小</title&…

浅述安防视频监控平台EasyCVR视频汇聚管理系统运维管理能力

智慧安防监控EasyCVR视频管理平台能在复杂的网络环境中&#xff0c;将前端设备统一集中接入与汇聚管理。国标GB28181协议视频监控/视频汇聚EasyCVR平台可以提供实时远程视频监控、视频录像、录像回放与存储、告警、语音对讲、云台控制、平台级联、磁盘阵列存储、视频集中存储、…

如何保证Redis的缓存和数据库中的数据的一致性?

Redis的缓存如何和数据库中的数据保持一致性&#xff1f; 我们都知道&#xff0c;Redis是一个基于内存的键值存储系统&#xff0c;数据完全存放在内存中&#xff0c;这使得它的读写速度远超传统的硬盘存储数据库。对于高访问频率、低修改率的数据&#xff0c;通过将它们缓存在…

4.6 offset指令,jmp short指令,far,dword ptr各种跳转指令

4.6 offset指令&#xff0c;jmp short指令&#xff0c;far&#xff0c;dword ptr各种跳转指令 可以修改IP&#xff0c;或同时修改CS和IP的指令统称为转移指令。概括的讲&#xff0c;转移指令就是可以控制CPU执行内存中某处代码的指令 1. 转移指令 1.1 8086CPU的转移行为有以…

城市治理/县域治理方案:构建基于AI视频能力的“一张网”,助力新型城市发展

TSINGSEE青犀AI算法中台是一款平台型产品&#xff0c;专注于提供各行业中小场景部署解决方案。平台具备接入广、性能强、支持跨平台、芯片国产化等特点&#xff0c;可提供丰富的视图接入能力和智能分析能力。 平台采用了多项IT高新技术&#xff0c;包括视频编解码技术、嵌入式…

宁盾身份域管与Coremail邮件系统完成兼容互认证,持续深化信创布局

在信创国产化改造的背景下&#xff0c;企业邮箱的替换是许多党政、央国企、金融、制造企业面临的重要任务。为了满足企业对国产邮箱、OA等其他应用、终端实现统一身份认证&#xff0c;宁盾国产化身份域管与 Coremail XT 安全增强电子邮件系统 V5.0、V6.0 完成了产品兼容互认证&…

从redux的基本概念渐进式理解redux/toolkit的用法

概念 Redux toolkit是帮助提高redux开发效率的一个库 React-redux 是将React和Redux toolkit绑定在一起的一个库 action 是一个对象,里面有一个type属性 action creator是一个函数,这个函数可以返回上面的action对象。 reducer 是一个函数,接受两个参数(initilastate, acti…

【Vue3源码学习】— CH2.8 Vue 3 响应式系统小结

Vue 3 响应式系统小结 1.核心概念1.1 Proxy和Reflect1.2 响应式API1.3 依赖收集与更新触发1.4 触发更新&#xff08;Triggering Updates&#xff09;&#xff1a;1.5 副作用函数&#xff08;Effect&#xff09;1.6 计算属性和观察者1.7 EffectScope1.8 性能优化&#xff1a; 2.…

基于深度学习的机场航拍小目标检测系统(网页版+YOLOv8/v7/v6/v5代码+训练数据集)

摘要&#xff1a;在本博客中介绍了基于YOLOv8/v7/v6/v5的机场航拍小目标检测系统。该系统的核心技术是采用YOLOv8&#xff0c;并整合了YOLOv7、YOLOv6、YOLOv5算法&#xff0c;从而进行性能指标的综合对比。我们详细介绍了国内外在机场航拍小目标检测领域的研究现状、数据集处理…