Vue笔记(三)

上一篇:Vue二)-CSDN博客


目录

1.自定义指令

v-loading的封装

2.插槽

文本插槽

文本插槽(有默认值)

具名插槽

作用域插槽

详细做一个练习

实现如下效果

目录结构

准备数据

父传子数据

使用文本插槽自定义按钮文本

实现按钮功能--传值(使用了作用域插槽)

3.SPA与路由

SPA的优势原因

路由的介绍

VueRouter(5+2步操作)

固定的5步操作

具体操作

下载(完成后重启项目)

引包

注册VueRouter(Vue插件都需要注册)

new空的路由对象

路由对象注入Vue对象中

效果

第6步-创建组件,配置路由规则

第7步-配置路由出口

详细做一个练习

准备一些组件

导入组件和编写路由配置

确定路由出口与结构位置

效果

组件分类(从维护的角度)

路由模块封装(main.js不再写路由)

router-link声明式导航

小案例

两个类名的区别

自定义类名

动态路由传参-可选符(通常加上)

​编辑 ​编辑

路由重定向

 404-页面找不到

编程式导航跳转(两种方法)

①path路径跳转

②name路由名跳转(适合长路径)

编程式导航传参

第一种 

第二种 

​编辑

​编辑

 第三种

第四种

声明式 / 编程式导航总结

声明式导航

1. 基本的导航链接

2. 带查询参数的导航

3. 命名路由导航 

4. a标签跳转

编程式导航

1. router.push(location, onComplete?, onAbort?)

2.  router.replace(location, onComplete?, onAbort?)

3.  router.go(n)

4.233、344

5.综合案例-面经基础版

项目分析

准备空组件 

路由配置

一级路由配置

二级路由配置

首页重定向

实现功能 

导航链接高亮

首页请求渲染

①异步请求数据

②存储请求的数据

③动态渲染数据

⑤文章详情页-渲染(两种方式传参)

文章详情-返回上一页

缓存组件-keep-alive

keep-alive的三个属性



1.自定义指令

inserted(最常用的配置,但是不止)  说明:会在指令所在的元素,插入到页面中时触发

  • App.vue 
<template><div><h1>自定义指令</h1><input v-autoFocus type="text"></div>
</template><script>
export default {// 局部注册指令directives: {"autoFocus": {inserted (el){el.focus();}}}
}
</script><style></style>
  • main.js
import Vue from 'vue'
import App from './App.vue'Vue.config.productionTip = false// 全局注册指令
// Vue.directive('autoFocus',{
//   "inserted" (el) {
//     // console.log(el);
//     el.focus();
//   }
// })new Vue({render: h => h(App),
}).$mount('#app')
v-loading的封装


2.插槽

文本插槽

文本插槽(有默认值)

具名插槽

也有简写

作用域插槽

并不是新类型的插槽,而是给插槽传值的一种语法

详细做一个练习
实现如下效果

将表格封装成一个组件,复用两次,但是修改按钮

目录结构

准备数据
  • MyTable.vue

待解决:①封装的表格组件数据是写死的数据来自父组件,所以需要父传子操作

  • App.vue

父传子数据

解决表格数据写死的问题

  • MyTable.vue

  • App.vue

使用文本插槽自定义按钮文本

实现按钮功能--传值(使用了作用域插槽)

  • 创建一个对象存储item

对象名随便命名

  • 拿值

  • 实现功能


3.SPA与路由

SPA:单页面应用程序,所有的功能在一个HTML中实现

类比网易云音乐官网和京东官网

SPA的优势原因

路由的介绍

VueRouter(5+2步操作)

安装 | Vue Router (vuejs.org)

固定的5步操作

具体操作
下载(完成后重启项目)
npm i vue-router@3.6.5
引包

注册VueRouter(Vue插件都需要注册)

new空的路由对象

路由对象注入Vue对象中

效果

第6步-创建组件,配置路由规则

第7步-配置路由出口

详细做一个练习
准备一些组件

导入组件和编写路由配置

确定路由出口与结构位置

效果


组件分类(从维护的角度)

为什么使用了路由后,组件从components目录改放到views目录?

本质都是.vue文件,毫无区别,只是程序员需要考虑到维护,所以根据使用场景对其进行分类,分为 页面组件复用组件


路由模块封装(main.js不再写路由)

优化上一节的案例,所有在main.js写的路由相关的配置都转移到单独的js文件,只做最后的引入

router-link声明式导航

  • 如下图,vue提供的标签,点击哪个就设置一个类名,并且取消其他同类标签的类名 ,只需要给一个类名设置样式就好了(自己写原生太麻烦)

提供的两个类名分别是(选其一)

router-link-exact-activerouter-link-active

小案例
  • 效果

  • 修改上一次案例

  • 加一个类样式


两个类名的区别

exact:adj.精确的

模糊匹配是对于开头能匹配成功就行,精准匹配是完全能匹配成功才行

模糊匹配用的多

  • 模糊匹配的使用

下图可以看到,只要是开头路径匹配成功,后面再多,依旧高亮

自定义类名


设置了/search/:words后,这是模糊匹配,无论是/search/a 还是/search/a/b都一样能传参

 

动态路由传参-可选符(通常加上)
 

路由重定向

匹配到A路径,自动跳转到B路径

 404-页面找不到

path中的*表示,除了已经配置的路径,都能匹配成功


编程式导航跳转(两种方法)

不用原生js的方法了

①path路径跳转

②name路由名跳转(适合长路径)

不需要写全部的路由路径了,只需要写某个路由名

<template><div class="home"><div class="logo-box"></div><div class="search-box"><input v-model="inpValue" type="text"><button @click="goSearch">搜索一下</button></div><div class="hot-link">热门搜索:<router-link to="/search/黑马程序员">黑马程序员</router-link><router-link to="/search/前端培训">前端培训</router-link><router-link to="/search/如何成为前端大牛">如何成为前端大牛</router-link></div></div>
</template><script>
export default {name: 'FindMusic',data () {return {inpValue: ''}},methods: {goSearch () {// 1. 通过路径的方式跳转// (1) this.$router.push('路由路径') [简写]//     this.$router.push('路由路径?参数名=参数值')// this.$router.push('/search')// this.$router.push(`/search?key=${this.inpValue}`)// this.$router.push(`/search/${this.inpValue}`)// (2) this.$router.push({     [完整写法] 更适合传参//         path: '路由路径'//         query: {//            参数名: 参数值,//            参数名: 参数值//         }//     })// this.$router.push({//   path: '/search',//   query: {//     key: this.inpValue//   }// })// this.$router.push({//   path: `/search/${this.inpValue}`// })// 2. 通过命名路由的方式跳转 (需要给路由起名字) 适合长路径//    this.$router.push({//        name: '路由名'//        query: { 参数名: 参数值 },//        params: { 参数名: 参数值 }//    })this.$router.push({name: 'search',// query: {//   key: this.inpValue// }params: {words: this.inpValue}})}}
}
</script><style>
.logo-box {height: 150px;background: url('@/assets/logo.jpeg') no-repeat center;
}
.search-box {display: flex;justify-content: center;
}
.search-box input {width: 400px;height: 30px;line-height: 30px;border: 2px solid #c4c7ce;border-radius: 4px 0 0 4px;outline: none;
}
.search-box input:focus {border: 2px solid #ad2a26;
}
.search-box button {width: 100px;height: 36px;border: none;background-color: #ad2a26;color: #fff;position: relative;left: -2px;border-radius: 0 4px 4px 0;
}
.hot-link {width: 508px;height: 60px;line-height: 60px;margin: 0 auto;
}
.hot-link a {margin: 0 5px;
}
</style>


编程式导航传参

两种跳转方式都支持两种传参方式,所以一共有四种写法

原理就是创建几个全局对象,点击按钮的时候将数据存入对象,其他组件取用就好

第一种 

第二种 

配置路由

加个参数

使用


 第三种

第四种


声明式 / 编程式导航总结
声明式导航

声明式导航方式在Vue Router中主要通过<router-link>组件来实现,它允许你直接在模板中创建导航链接,而无需编写额外的JavaScript代码。以下是一些常见的声明式导航方式及其示

1. 基本的导航链接

使用<router-link>组件,并通过to属性指定目标路由的路径。

<router-link to="/home">Home</router-link>  
<router-link to="/about">About</router-link>

2. 带查询参数的导航

你可以通过在to属性中传递一个对象来添加查询参数。

<router-link :to="{ path: '/search', query: { q: 'vue' } }">Search Vue</router-link>

3. 命名路由导航 

如果你的路由配置中使用了命名路由,你可以通过to属性中的name属性来导航到相应的路由。

<router-link :to="{ name: 'user', params: { id: 123 } }">User 123</router-link>

4. a标签跳转

可以直接通过a href跳转

 <a href="#/Home">首页</a>

编程式导航

编程式导航是Vue Router提供的一种灵活的方式来进行路由导航。这种方式主要通过Vue组件实例或Vue Router实例的方法来实现,而不是在模板中声明导航链接。

1. router.push(location, onComplete?, onAbort?)

push方法用于导航到新的URL,类似于<router-link>的to属性。它可以接收一个路径字符串或是一个描述目标位置的对象。

this.$router.push('/home'); // 导航到 /home 路径  // 使用带查询参数的对象  
this.$router.push({ path: '/search', query: { q: 'vue' } }); // 导航到 /search?q=vue  // 使用命名路由和参数  
this.$router.push({ name: 'user', params: { id: 123 } }); // 导航到命名路由user,并传递id参数

2.  router.replace(location, onComplete?, onAbort?)

replace方法用于替换当前路由,它不会向浏览器历史记录中添加新的记录。

this.$router.replace('/about'); // 替换当前路由为 /about,但不记录历史

3.  router.go(n)

go方法用于在浏览器历史记录中前进或后退指定的步数。

this.$router.go(1); // 前进一步,类似于浏览器的前进按钮  
this.$router.go(-1); // 后退一步,类似于浏览器的后退按钮

4.233、344

Vue2.x 与 Vue3.x版本对应口诀

使用vue2.x时,对应的路由版本和vuex版本是3版本


5.综合案例-面经基础版

视频教程:082-面经基础版-案例效果分析_哔哩哔哩_bilibili

项目分析

准备空组件 

路由配置
一级路由配置

  • 配置首页的一级路由

  • 配置面经详情的一级路由

  • 核心代码截图

二级路由配置

首页重定向

进网站首页,自动跳转到文章组件


实现功能 
导航链接高亮


首页请求渲染
①异步请求数据

②存储请求的数据

③动态渲染数据

⑤文章详情页-渲染(两种方式传参)
  • query查询参数传参

第一步:点击传参

第二步:带上获取的参数请求数据

请求的数据

第四步:新建对象存储,渲染


  • 动态路由传参

文章详情-返回上一页


缓存组件-keep-alive

keep-alive的三个属性

注意:include和exclude要写组件名数组,必须是数组,元素较多可以写在data中,而且必须是组件名,如果没有设置组件名name,才会去选择组件文件命名

通常使用include就够了,如果使用exclude,容易影响性能,因为除了指定的组件不缓存,其他都缓存,一定要配合着max使用

下一章:

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

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

相关文章

动态防护开启教程和体验感受

动态防护是雷池 WAF 社区版在版本 [6.0.0] 中新增的一个功能&#xff0c;它属于站点高级防护的一部分。动态防护的主要作用是自动动态加密网站的 HTML 和 JavaScript 源码&#xff0c;目的是阻止爬虫和攻击自动化程序的分析。这项功能在 [6.0.0] 版本中标记为 BETA 版本&#x…

2024 年最新 Python 调用 OpenAi 详细教程实现问答、图像合成、图像理解、语音合成、语音识别(详细教程)

OpenAi 环境安装 首先确保您的计算机上已经安装了 Python。您可以从 Python 官方网站下载并安装最新版本 Python。安装时&#xff0c;请确保勾选 “Add Python to PATH” &#xff08;添加环境变量&#xff09;选项&#xff0c;以便在 cmd 命令行中直接使用 Python。 安装 Op…

华为大咖说 | AI 是行业的未来, 还是另一个“元宇宙”?

本文作者&#xff1a;陈冠宏&#xff08;华为网络MSSD首席顾问&#xff09;全文约4497字&#xff0c;阅读约需10分钟 在本年度的517电信日上&#xff0c;中国电信高层在产品升级计划发布会中喊出“ALL in AI”战略&#xff0c;其震撼力让人瞩目。 自2022年11月OpenAI推出划时代…

机器学习归一化特征编码

特征缩放 因为对于大多数的机器学习算法和优化算法来说&#xff0c;将特征值缩放到相同区间可以使得获取性能更好的模型。就梯度下降算法而言&#xff0c;例如有两个不同的特征&#xff0c;第一个特征的取值范围为1——10&#xff0c;第二个特征的取值范围为1——10000。在梯度…

Facebook隐私保护:用户数据安全的挑战与应对策略

在当今数字化时代&#xff0c;随着社交媒体的普及和信息技术的快速发展&#xff0c;人们对于个人数据隐私和安全的关注越来越高。作为全球最大的社交网络平台之一&#xff0c;Facebook在用户数据保护方面面临着诸多挑战和责任。本文将深入探讨Facebook在隐私保护方面的现状、面…

k8s+springcloud+nacos部署配置

1 k8s 部署nacos-2.1.2配置k8s-nacos-statefulSet.yaml文件 apiVersion: v1 kind: Service metadata:name: nacos-headlessnamespace: rz-dtlabels:app: nacosannotations:service.alpha.kubernetes.io/tolerate-unready-endpoints: "true" spec:# 3个端口打开&…

VMware ESXi 8.0U2c macOS Unlocker OEM BIOS ConnectX-3 网卡定制版 (集成驱动版)

VMware ESXi 8.0U2c macOS Unlocker & OEM BIOS ConnectX-3 网卡定制版 (集成驱动版) 发布 ESXi 8.0U2 集成驱动版&#xff0c;在个人电脑上运行企业级工作负载 请访问原文链接&#xff1a;https://sysin.org/blog/vmware-esxi-8-u2-sysin/&#xff0c;查看最新版。原创作…

UE5.2打包安卓

目录 简介: 一. 根据官网配置 二. 手动定位SDK路径 三: 设置Android基本信息 四: 设置KeyStore 五: 开始打包 六:其他 七. 总结 简介: UE5.2 打包安卓是指将使用 Unreal Engine 5.2 开发的项目编译为可在安卓设备上运行的安装包。 以下是一般的打包步骤&#xff1a; 安装…

Spring Cloud全家桶(上)【Nacos、OpenFeign、LoadBalancer、GateWay、金丝雀灰色发布】

0.零基础入门微服务实战课 1.微服务和 Spring Cloud1.1 什么是微服务&#xff1f;1.2 什么是 Spring Cloud&#xff1f;1.3 微服务 VS Spring Cloud 2.为什么要学微服务&#xff1f;3.Spring Cloud 组件介绍1.什么是 Nacos?1.1 Nacos 功能1.1.1 配置中心1.1.2 注册中心 1.2 Na…

HashMap底层源码分析

目录 一、知识点二、数据结构三、resize() 扩容方法四、putVal() 添加数据方法五、remove() 删除方法六、removeTreeNode() 退化链表方法 一、知识点 加载因子: HashMap 的默认的加载因子: 0.75&#xff0c;用来限定阈值&#xff08;用于控制 HashMap 的饱和度&#xff09; 阈值…

红酒保存中的摆放方式:倾斜瓶身的重要性

在探讨云仓酒庄雷盛红酒的保存方法时&#xff0c;我们不得不提及一个关键的细节&#xff1a;瓶身的倾斜。许多人可能认为红酒的保存方式仅仅是温度控制和存储环境的湿度问题&#xff0c;然而实际上&#xff0c;摆放方式同样至关重要。雷盛红酒在保存过程中&#xff0c;需要一个…

安川机器人MA1440减速机维修方法

一、安川机械臂减速器维修方法 1. 齿轮磨损维修 对于轻微磨损的齿轮&#xff0c;可以通过重新调整啮合间隙来恢复性能。对于严重磨损的齿轮&#xff0c;需要更换新安川MA1440机械手齿轮箱齿轮。 2. 轴承损坏维修 对于损坏的轴承&#xff0c;需要更换新的轴承。在更换过程中&…

省市县选择三级联动(使用高德API实现)

省市县选择如果自己实现是比较麻烦的&#xff0c;最近发现可以使用高德实现省市县联动选择&#xff0c;实现后来记录一下供大家参考。 文章目录 最终效果&#xff1a;一、准备工作二、完整页面代码 最终效果&#xff1a; 实现单次点击获取省市县名称&#xff0c;选择完成后返回…

web端即时通信技术

web端即时通信技术 对于IM/消息推送这类即时通讯系统而言&#xff0c;系统的关键就是“实时通信”能力。所谓实时通信有以下两层含义 客户端可以主动向服务端发送信息。 当服务端内容发生变化时&#xff0c;服务端可以实时通知客户端。 HTTP局限 Http是客户端/服务器模式中…

免费分享:1901-2020全球气候数据集(附下载办法)

长期的全球其后数据不仅能够揭示长期的气候趋势&#xff0c;还为农业、水资源管理、公共卫生等多个领域的决策提供科学依据&#xff0c;对于推动可持续发展具有重要意义。 数据集简介 CRU TS&#xff08;Climatic Research Unit gridded Time Series&#xff09;数据集&#…

宽睿数字平台兼容TDengine 等多种数据库,提供行情解决方案

小T导读&#xff1a;最近&#xff0c;涛思数据与宽睿金融宣布了一项重要合作。在此之前&#xff0c;宽睿金融对 TDengine 进行了性能测试&#xff0c;并根据测试报告的结果&#xff0c;决定将 TDengine 接入宽睿数字平台&#xff0c;以提升高密度行情处理效率。本文将详细介绍此…

百元开放式耳机性价比推荐,全网5款爆火产品实测!

耳机作为我们日常生活中不可或缺的一部分&#xff0c;它的性能、配置及形态也在不停的优化。目前开放式耳机是耳机中最为热门的一款产品&#xff0c;以其不入耳的的设计迅速占领耳机市场&#xff0c;最主要是因为自身佩戴的舒适度有大幅度提升。人们更加注重生活的质量&#xf…

Apollo9.0 PNC源码学习之Control模块(五)—— 基于LQR的横向控制

前面文章&#xff1a; Apollo9.0 PNC源码学习之Control模块&#xff08;一&#xff09; Apollo9.0 PNC源码学习之Control模块&#xff08;二&#xff09; Apollo9.0 PNC源码学习之Control模块&#xff08;三&#xff09; Apollo9.0 PNC源码学习之Control模块&#xff08;四&…

通信原理抽样定理和PAM调制解调硬件实验

一、实验目的 1. 加深理解抽样定理&#xff1b; 2. 加深理解脉冲幅度调制的原理。 二、实验内容 1. 观测PAM平顶抽样波形&#xff1b; 2. 观测PAM自然抽样波形及解码后波形。 三、实验器材 1. 双踪示波器&#xff1b; 2. 通信原理实验箱信号源模块、①号模块。 四、实…

Stable Diffusion学习指南【图生图篇】

一、图生图功能初识 1.1 传统意义上的喂参考图 我们都知道&#xff0c;模型在运算时是根据我们提供的提示内容来确定绘图方向&#xff0c;如果没有提示信息&#xff0c;模型只能根据此前的学习经验来自行发挥。在之前的文生图篇&#xff0c;我们介绍了如何通过提示词来控制图…