2022/9/13总结

2023-09-14 00:49:30

Vue 

 路由的封装抽离

为了便于维护 ,我们通常需要将路由模块抽离出来

在vue中,如果要写路径,可以写绝对路径 使用@   @代表从src目录下去寻找,能避免出现很多错误

 声明式导航  --  导航链接

vue-router提供了一个全局组件router-link(取代a标签)  配置  to  属指定路径  本质是  a  标签,to 无需  #

优点:能高亮  默认会提供高亮样式  可以直接设置高亮样式

在页面中其实也就是 a 标签  多了类名,根据这个类名 可以自己设置

效果

router-link 自动给当前导航添加了俩个高亮类名

  • router-link-exact-active     精确匹配  to="/my"  仅仅匹配  /my
  • router-link-active    模糊匹配   to="/my"  "/my/a"  写/my 可以匹配后接的/a   /b

如果觉得太长,可以自定义这俩个类

然后就能对应上

声明式导航——跳转传参

查询参数传参

语法  to="/path?参数名=值“

对应页面组件接受传递过来的值   $route.query.参数名

动态路由传参

配置动态路由 

const router=new VueRouter({
    routes:[
        {

            path:'/search/:words',
            component:search
        }

    ]
})

配置导航链接   to="/path/参数值"

对应页面组件接受过来的值  $oute.params.参数名

如果配置成  ”/search/:words“ 来表示 ,则必须要传递参数 ,如果不传递参数,也希望匹配,可以在后面加一个  可选符号 "?"  

Vue路由——重定向

当我们想要访问当前路径,强制跳转到另外一个路径时 就可以使用该重定向

语法 {  path:匹配路径,redirect:重定向后的路径  }

如果想要更人性化一点,客户访问的地址不存在,可以在最后写 path:"*"  (匹配任意路径),并且给出一个404的界面

由于我们的地址栏路径带有一个  # 号,显得十分的不美观  

路由的路径模式有俩种

  • hash路由( 默认 )带有#号
  • history路由( 常用 )不带#号

path路径跳转

 如果路径太长,为了省事 可以指定name

如果在传递参数时,需要传递多个参数,拼接地址栏可能很麻烦,可以直接按照对象去写,vue-route给我们提供了便利

学习vue3

学习vue的时候  学姐都说 直接学习vue3 就可以 开启vue3学习旅程

vue3 的优势

  • 更容易维护——组合式API  由更好的TypeScript 支持
  • 更快的速度——重写diff算法  模板编译优化   更高效的组件初始化
  • 更小的体积——良好的TreeShaking  按需引入
  • 更优的数据响应式  Proxy

create-vue  

vue官方新的脚手架工具  底层切换到了 vite (下一代构建工具)

前提  已经安装 16.0 或者更高版本的Node,js 

创建 vue 应用  npm init vue@latest  这个指令会安装并且执行 create-vue

把上面绿色的按照顺序输入一遍

然后就是下面这样代表安装好了

 

打开网址  出现下面这个代表完成

在vue3中创建实例

直接写 createApp()   vue3将创建实例进行了封装 保证每个实例的独立封闭性

vue3支持多个根元素

setup  

执行时机 比beforeCreate 还要早

setup函数中  获取不到this 

数据 和 函数 需要在setup 中 return 才能使用 

setup的语法糖  给组合式API提供了便利

上面俩个是等价的 

reactive()

接受 对象类型数据 的参数 传入 并且返回 一个响应式的对象

ref()

接收简单类型或者对象类型的数据 传入并且返回一个响应式的对象

本质上  是在原有传入数据的基础上  外包了一层对象 包成了复杂数据类型  再借助  reative 实现了响应式 

在js代码中访问数据时 需要通过  .value

在模板 中不需要通过 .value

computed

和vue的写法是差不多的

watch函数

监听 一个或者 多个数据的变化  数据变化时执行 回调函数

俩个额外参数  immediate (立即执行) deep (深度监听)

 通常我们不需要监视整个对象而是对象的某些属性

vue3的生命周期

 上面是对应的vue2 和 vue3 的生命周期函数

vue3的组件通信

在vue3中 引用就可以使用  不用在component里面再次进行声明

父子组件

父传子之间的通信  利用  编译器宏  defineProps 

defineProps原理  就是编译阶段的一个标识  实际编译器解析时  遇到后 会进行编译转换

效果:

子传父之间的通信   

父组件 中给 子组件标签通过 @ 绑定事件 

子组件内部通过emit方法触发事件 

效果:

点击往下降 父组件和子组件都能改变

模板引用

通过 ref 标识 获取真实的dom对象或者组件实例对象

使用: 调用  ref  函数生成一个  ref  对象,通过  ref  标识绑定  ref  对象到标签

通过 ref  可以获取到组件的 数据 以及 方法  但是默认情况下 在  setup  下组件内部的属性和方法是不开放的,可以通过  defineExpose  编译宏 来指定 哪些属性和方法允许访问

需要注意的是获取模板引用的时机必须要是组件挂载完毕  ——  onMounted()

provide  和  inject

主要作用于  顶层组件向任意底层组件  传递数据和方法 实现跨层组件通信

顶层组件通过  provide  提供数据  底层组件通过  inject  函数获取数据

提供的数据是响应式数据 

倘若子孙组件想要修改 顶级组件 就在顶级组件提供方法 来给所有的子孙组件使用

 

 

更多推荐

金属热处理 术语

声明本文是学习GB-T7232-2023金属热处理术语.而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们1范围本文件界定了金属热处理基础、热处理工艺、组织与性能和热处理装备的主要术语及其定义。本文件适用于金属热处理相关技术标准及技术文件。2规范性引用文件本文件没有规范性引用文件。3基础术语3.1总称

Java之stream流的详细解析一

2.Stream流2.1体验Stream流【理解】案例需求按照下面的要求完成集合的创建和遍历创建一个集合,存储多个字符串元素把集合中所有以"张"开头的元素存储到一个新的集合把"张"开头的集合中的长度为3的元素存储到一个新的集合遍历上一步得到的集合原始方式示例代码publicclassMyStream1{publicst

什么是 Redis?

Redis是一种基于内存的数据库,对数据的读写操作都是在内存中完成的,因此读写速度非常快,常用于缓存,消息队列,分布式锁等场景。Redis提供了多种数据类型来支持不同的业务场景,比如String(字符串)、Hash(哈希)、List(列表)、Set(集合)、Zset(有序集合)、Bitmaps(位图)、HyperLog

400电话的办理和申请流程详解

导语:随着企业的发展和市场竞争的加剧,越来越多的企业开始关注客户服务体验的提升。而办理400电话成为了企业提升客户服务质量的重要手段之一。本文将详细介绍400电话的办理和申请流程,帮助企业了解如何顺利获得400电话。一、了解400电话的概念和优势400电话是一种虚拟电话号码,以400开头,由运营商提供的电话服务。相比于

QT&C++ day12

注册登录界面widget.h#ifndefWIDGET_H#defineWIDGET_H#include<QWidget>#include<QIcon>#include<QPushButton>#include<QLineEdit>#include<QLabel>#include<QDebug>#include<QMe

Ubuntu 22 Docker的使用和安装

确认系统内核版本不低于3.10,并且是64位系统,在终端执行以下命令验证内核及系统信息:$uname-aLinuxVM-4-14-ubuntu5.15.0-76-generic#83-UbuntuSMPThuJun1519:16:32UTC2023x86_64x86_64x86_64GNU/Linux通过上面的输出可知

面经学习三

目录Java与C++的区别面向对象和面向过程的区别面向对象特性Java的基本数据类型深拷贝和浅拷贝Java创建对象的几种方式final,finally,finalize的区别Java与C++的区别Java是纯粹的面向对象语言,所有的对象都继承自java.lang.Object,C++兼容C,不但支持面向对象也支持面向过

Spring Cloud Alibaba

单体应用优点:1、系统的简易性:系统语言风格、业务结构,接口格式均具有一致性,服务都是耦合在一起的,不存在各个业务通信问题。2、易于测试:单体应用一旦部署,所有的服务或特性就都可以使用了,简化了测试过程,无需额外测试服务间的依赖,测试均可在部署完成后开始。3、易于部署与升级:相对于微服务架构中的每个服务独立部署,单体系

Java基础面试题精选:深入探讨哈希表、链表和接口等

目录1.ArrayList和LinkedList有什么区别?🔒2.ArrayList和Vector有什么区别?🔒3.抽象类和普通类有什么区别?🔒4.抽象类和接口有什么区别?🔒5.HashMap和Hashtable有什么区别?🔒6.HashMap底层是如何实现的?🔒7.HashMap和HashSet有什么区别

【每日一题Day330】LC337打家劫舍Ⅲ | 动态规划

打家劫舍Ⅲ【LC337】小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为root。除了root之外,每栋房子有且只有一个“父“房子与之相连。一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。如果两个直接相连的房子在同一天晚上被打劫,房屋将自动报警。给定二叉树的root。返回在

基于开源模型搭建实时人脸识别系统(六):人脸识别(人脸特征提取)

文章目录人脸识别的几个发展阶段基于深度学习的人脸识别技术的流程闭集和开集(Openset)识别人脸识别的损失Insightface人脸识别数据集模型选型参考文献结语人脸识别系统项目源码前面我们讲过了人脸检测、人脸质量、人脸关键点、人脸跟踪,接下来就是人脸识别系统里面的重中之重人脸识别了,或者叫人脸特征提取,这个算法是来

热文推荐