Vue3笔记01 创建项目,Composition API,新组件,其他
Vue3
创建Vue3项目
vue-cli
//查看@vue/cli版本,确保在4.5.0以上
vue --version
//安装或升级@vue/cli
npm install -g @vue/cli
//创建项目
vue create new_project
//启动
cd new_project
npm run serve

也可以通过vue ui进入图形化界面进行创建
vite
新一代前端构建工具
//创建工程
npm init vite-app <project-name>
//进入工程目录
cd <project-name>
//安装依赖
npm install
//运行
npm run dev
项目结构
main.js

vue3开发工具插件与vue2不共用需重新下载
常用 Composition API
setup
理解:Vue3.0中一个新的配置项,值为一个函数
setup是所有 Compositon API(组合API) 表演的舞台
组件中所用到的:数据,方法等,均要配置在setup中
setup函数的两种返回值:
若返回一个对象,则对象的属性,方法在模板中均可直接使用

若返回一个渲染函数,则可以自定义渲染内容(了解)

注意:
1、不要与Vue2配置混用,(data,method等)可以访问setup,反之不行,重名setup优先
2、setup不能是一个async函数,因为async函数返回值不再是return对象,而是promise
ref函数
想要setup中数据是响应式的就需要,在定义是使用ref函数,并在使用时xxx.value来使用或修改

处理对象类型

总结
作用:定义一个响应式的数据
语法:const xxx=ref(initValue) 创建一个包含响应式数据的引用对象
用法:js操作数据xxx.value,模板读取数据{{xxx}}
备注:接收的数据可以是基本类型,也可以是对象类型
reactive函数

reactive与ref的区别
ref用来定义基本数据类型,ref定义对象或数组底层借助reactive
reactive用来定义对象或数组类型
ref定义的数据使用时需要xxx.value,ref定义的数据不用
Vue3.0响应式原理
通过Proxy(代理):拦截对象中任意属性的变化,包括:属性值的读写,属性的添加,删除
通过Reflect(反射):对被代理对象的属性进行操作

setup的两个注意点
父组件传值,绑定事件

子组件接收使用数据,触发事件传参

props:值为对象,接收组件外传递过来并且组件内部声明接收了的属性,供setup使用
context:上下文对象
attrs:值为对象,组件外部传递过来,但并没有在props中声明的属性
(如果没有props:["msg"]),那么就可以在context.attrs中找到msg
slots:收到的插槽内容,相当于this.$slots
emit:分发自定义事件的函数,相当于this.$emit
computed计算属性

watch函数
监视ref函数定义的响应式数据

监视reactive定义的响应式数据

坑:
监视reactive定义的响应式数据时:oldValue无法正确获取,强制开启了深度监视
监视reactive定义的响应式数据中某个属性时,deep配置有效
监视ref函数定义的对象类型响应式数据

watchEffect

Vue3生命周期


自定义hook函数
hook本质是一个函数,把setup函数中使用的Composition API进行了封装。
类似与Vue2中的mixin
自定义hook的优势,复用代码,让setup中的逻辑更清楚易懂
原始写法

使用hook抽取公共数据
新建hooks文件夹

使用hook函数

toRef

作用:创建一个ref对象,其value值指向另一个对象中的某个属性
语法:const name=toRef(person,'name')
应用:要将响应式对象中的某个属性单独提供给外部使用时
toRefs与toRef功能一致,但可以批量创建多个ref对象,语法:toRefs(person)
其他Composition API
略
shallowReactive:只处理对象最外层的响应式(当一个对象数据变化的只有外层属性时使用)
shallowRef:只处理基本数据类型的响应式(当一个对象数据后续不会修改其内的属性,而是生成新对象整体替换时)
readonly:让一个响应式数据变为只读的(深只读)
shallowReadonly:让一个响应式数据变为只读的(浅只读) 不希望数据被修改时使用
toRaw:将一个由reactive生成的响应式对象转为普通对象
markRaw:标记一个对象,使其永远不会再成为响应式对象(有些值不应该被设置为响应式的,如第三方类库等;当渲染具有不可变数据的大列表时,跳过响应式转换可以提高性能)
customRef
创建一个自定义的ref,并对其依赖项跟踪和更新触发进行显式控制
防抖案例

provide&&inject

实现祖孙组件间通信(实际上所有后代组件都可以使用inject接收到)

响应式数据的判断
isRef:检查一个值是否为一个ref对象
isReactive:检查一个对象是否是由reactive创建的响应式代理
isReadonly:检查一个对象是否是由readonly创建的只读代理
isProxy:检查一个对象是否是由reactive或者readonly方法创建的代理
composition API的优势
传统OptionsAPI中:新增或者修改一个需求,我需要分别再data,method,computed中修改
Compostion API:可以更加优雅的组织我们的代码,函数,让相关功能的代码有序组织在一起
Vue3新组件
Fragment
在Vue2中,组件必须有一个根标签
在Vue3中,组件可以没有根标签,内部会将多个标签包含在一个Fragment虚拟元素中
减少标签层级,减小内存占用
Teleport
Teleport是一种能够将我们的组件html结构移动到指定位置的技术
传到body后,就可以方便的进行定位以及一些遮罩效果的编写

Suspense
等待异步组件时渲染一些额外的内容,让应用有更好用户体验

其他
全局API的转移
将vue.xxx转移到app(应用实例)上

data选项应始终被声明为一个函数
过渡类名的更改

移除keyCode作为v-on的修饰符,同时也不在支持config.keyCodes
移除v-on.native修饰符

移除过滤器(建议使用方法调用或计算属性去替换)
相关文章:
Vue3笔记01 创建项目,Composition API,新组件,其他
Vue3 创建Vue3项目 vue-cli //查看vue/cli版本,确保在4.5.0以上 vue --version //安装或升级vue/cli npm install -g vue/cli //创建项目 vue create new_project //启动 cd new_project npm run serve 也可以通过vue ui进入图形化界面进行创建 vite 新一代前端…...
pandas数据分析(二)
文章目录DataFrame数据处理与分析读取Excel文件中的数据筛选符合特定条件的数据查看数据特征和统计信息按不同标准对数据排序使用分组与聚合对员工业绩进行汇总DataFrame数据处理与分析 部分数据如下 这个数据百度可以搜到,就是下面这个 读取Excel文件中的数据 …...
Spring实现[拦截器+统一异常处理+统一数据返回]
Spring拦截器 1.实现一个普通拦截器 关键步骤 实现 HandlerInterceptor 接口重写 preHeadler 方法,在方法中编写自己的业务代码 Component public class LoginInterceptor implements HandlerInterceptor {/*** 此方法返回一个 boolean,如果为 true …...
MySQL——插入加锁/唯一索引插入死锁/批量插入效率
本篇主要介绍MySQL跟加锁相关的一些概念、MySQL执行插入Insert时的加锁过程、唯一索引下批量插入可能导致的死锁情况,以及分别从业务角度和MySQL配置角度介绍提升批量插入的效率的方法;MySQL跟加锁相关的一些概念在介绍MySQL执行插入的加锁过程之前&…...
【专项训练】数组、链表
数组array: list = []链表linked list # Definition for singly-linked list. class ListNode:def __init__(self, x):self.val = xself.next =...
基于Jeecgboot前后端分离的ERP系统开发代码生成(六)
商品信息原先生成的不符合要求,重新生成,包括一个附表商品价格信息表 一、采用TAB主题一对多的模式 因为主键,在online表单配置是灰的,所以不能进行外键管理,只能通过下面数据库进行关联录入,否则online界面…...
什么?同步代码块失效了?-- 自定义类加载器引起的问题
一、背景 最近编码过程中遇到了一个非常奇怪的问题,基于单例对象的同步代码块似乎失效了,百思不得其姐。 下面给出模拟过程和最终的结论。 二、场景描述和模拟 2.1 现象描述 Database实现单例,在 init 方法中使用同步代码块来保证 data不…...
CHAPTER 4 文件共享 - Samba
文件共享 - Samba1 Samba1.1 Samba的软件架构1.2 搭建Samba服务器1.3 samba用户管理1. 添加用户2. 修改用户密码3. 删除用户和密码4. 查看samba用户列表5. 查看samba服务器状态1.4 samba共享设置(配置文件详解)1.5 访问共享目录1. windows访问2. linux客…...
深入分析@Configuration源码
文章目录一、源码时序图1. 注册ConfigurationClassPostProcessor流程源码时序图2. 注册ConfigurationAnnotationConfig流程源码时序图3. 实例化流程源码时序图二、源码解析1. 注册ConfigurationClassPostProcessor流程源码解析(1)运行案例程序启动类Conf…...
Unity 代码优化 内存管理优化
项目遇到了卡顿的情况 仔细检查了代码没检查出有误的地方 仔细的总结了一下可以优化的东西 解决了卡顿 记录一下 1 协程 项目之前写的关于倒计时之类的东西 都是开了个协程 虽然协程是消耗很小的线程 , 可是还是有额外消耗 而且 有很多用携程来检测销毁预制体的操作 也都放到U…...
设计模式~门面(外观)模式(Facade)-08
目录 (1)优点 (2)缺点 (3)使用场景 (4)注意事项: (5)应用实例: (6)源码中的经典应用 代码 外观模式&am…...
C++面向对象编程之一:封装
C面向对象编程三大特性为:封装,继承,多态。C认为万事万物皆为对象,对象有属性和行为。比如:游戏里的地图场景可以看作是长方形对象,属性场景id,有长,有宽,可能有NPC&…...
IDEA插件系列(3):Maven Helper插件
一、引言在写Java代码的时候,我们可能会出现Jar包的冲突的问题,这时候就需要我们去解决依赖冲突了,而解决依赖冲突就需要先找到是那些依赖发生了冲突,当项目比较小的时候,还比较依靠IEDA的【Diagrams】查看依赖关系&am…...
SAP 更改物料基本计量单位
前言部分 在SAP中物料创建后,一旦发生业务,其基本计量单位便很难修改。由于单位无法满足业务要求,往往会要求新建一个物料替代旧物料。这时候除了要将旧物料上所有的未清业务删除外,还需要替换工艺与BOM中的旧物料。特别是当出现旧…...
蓝桥web基础知识学习
HTMLCSS 知识点重要指数HTML 基础标签🌟🌟🌟🌟🌟HTML5 新特性🌟🌟🌟🌟🌟HTML5 本地存储🌟🌟🌟🌟CSS 基础语法…...
Python+ChatGPT制作一个AI实用百宝箱
目录一、注册OpenAI二、搭建网站及其框架三、AI聊天机器人四、AI绘画机器人ChatGPT 最近在互联网掀起了一阵热潮,其高度智能化的功能能够给我们现实生活带来诸多的便利,可以帮助你写文章、写报告、写周报、做表格、做策划甚至还会写代码。只要与文字相关…...
Python中格式化字符串输出的4种方式
Python格式化字符串的4中方式 一、%号 二、str.format(args) 三、f-Strings 四、标准库模板 五、总结四种方式的应用场景’ 一、%号占位符 这是一种引入最早的一种,也是比较容易理解的一种方式.使用方式为: 1、格式化字符串中变化的部分使用占位符 2、…...
C#基础教程15 枚举与类
文章目录 C# 枚举(Enum)声明 enum 变量C# 类(Class)类的定义成员函数和封装C# 中的构造函数关键字 staticC# 枚举(Enum) 枚举是一组命名整型常量。枚举类型是使用 enum 关键字声明的。 C# 枚举是值类型。换句话说,枚举包含自己的值,且不能继承或传递继承。 声明 enum 变…...
三步 让你的 vscode 自动编译ts文件
三步让你的 vscode 自动编译ts文件 TypeScript环境安装与如何在vscode实现自动编译ts文件? 文章目录三步让你的 vscode 自动编译ts文件前提条件环境安装自动编译运行监视任务时报错?前提条件 安装 node 环境 环境安装 tsc 作用:负责将ts 代码 转为 浏…...
STM32程序下载和启动方式
目录1 BOOT引脚配置和下载说明2 关于串口下载方式3 关于一按复位就跑代码4 关于下载调试速度5 关于三种启动方式5.1 FLASH启动5.2 系统存储器器启动5.3 SRAM启动6 关于程序的三种下载方式1 BOOT引脚配置和下载说明 BOOT0BOOT1程序运行ST-Link下载串口下载启动说明xx无0x√√用…...
3步实现缠论自动化:ChanlunX让复杂技术分析变得简单高效
3步实现缠论自动化:ChanlunX让复杂技术分析变得简单高效 【免费下载链接】ChanlunX 缠中说禅炒股缠论可视化插件 项目地址: https://gitcode.com/gh_mirrors/ch/ChanlunX 还在为缠论分析中的笔段划分和中枢识别而烦恼吗?ChanlunX通达信缠论插件正…...
高效小红书数据采集完全指南:从入门到实战的完整解决方案
高效小红书数据采集完全指南:从入门到实战的完整解决方案 【免费下载链接】xhs 基于小红书 Web 端进行的请求封装。https://reajason.github.io/xhs/ 项目地址: https://gitcode.com/gh_mirrors/xh/xhs 小红书数据采集已成为市场分析、品牌运营和内容创作的关…...
QKeyMapper:Windows平台开源按键映射解决方案完全指南
QKeyMapper:Windows平台开源按键映射解决方案完全指南 【免费下载链接】QKeyMapper [按键映射工具] QKeyMapper,Qt开发Win10&Win11可用,不修改注册表、不需重新启动系统,可立即生效和停止。支持游戏手柄映射到键鼠,…...
EMICoRe算法:用贝叶斯优化与高斯过程提升噪声下VQE性能
1. 项目概述:当VQE遇上硬件噪声,我们如何用机器学习“降噪”?在嘈杂中等规模量子(NISQ)计算的前沿,我们这些从业者每天都在与一个核心矛盾作斗争:一方面,量子硬件(如超导…...
iOS设备激活解锁终极指南:Applera1n工具完整使用教程
iOS设备激活解锁终极指南:Applera1n工具完整使用教程 【免费下载链接】applera1n icloud bypass for ios 15-16 项目地址: https://gitcode.com/gh_mirrors/ap/applera1n 还在为二手iOS设备的激活锁问题而烦恼吗?Applera1n是一款专为iOS 15-16系统…...
百度网盘直链解析:告别限速的Python神器实战指南
百度网盘直链解析:告别限速的Python神器实战指南 【免费下载链接】baidu-wangpan-parse 获取百度网盘分享文件的下载地址 项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wangpan-parse 你是否曾经面对百度网盘几十KB的下载速度感到绝望?当你…...
终极免费色彩校准方案:用novideo_srgb解决NVIDIA显卡广色域显示器色彩过饱和问题
终极免费色彩校准方案:用novideo_srgb解决NVIDIA显卡广色域显示器色彩过饱和问题 【免费下载链接】novideo_srgb Calibrate monitors to sRGB or other color spaces on NVIDIA GPUs, based on EDID data or ICC profiles 项目地址: https://gitcode.com/gh_mirro…...
Ubuntu 22.04上从零安装UCSF DOCK 6.11:手把手解决依赖与编译的那些坑
Ubuntu 22.04实战:UCSF DOCK 6.11完整安装指南与避坑手册在计算化学和药物发现领域,UCSF DOCK一直是分子对接和虚拟筛选的重要工具。最新发布的6.11版本集成了RDKit功能,为药物描述符计算和分子设计带来了全新可能。本文将带你在Ubuntu 22.04…...
超越准确率:基于数据集特性的归一化性能度量设计与实践
1. 项目概述与核心问题在机器学习项目里,评估模型性能是绕不开的一环。我们最熟悉的老朋友——准确率、精确率、F1分数——确实简单直观,拿来跟业务方汇报也容易讲清楚。但干得久了,尤其是在处理一些“非标准”数据集时,你总会隐隐…...
Warcraft Helper终极指南:5分钟让你的魔兽争霸3在现代系统流畅运行
Warcraft Helper终极指南:5分钟让你的魔兽争霸3在现代系统流畅运行 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 还在为魔兽争霸3在Wind…...
