Vue3笔记01 创建项目,Composition API,新组件,其他

news2025/1/24 22:54:45

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修饰符

移除过滤器(建议使用方法调用或计算属性去替换)

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

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

相关文章

论文笔记:Positive-incentive Noise

2022 TNNLS 中心思想是&#xff1a;噪声并不一定是有害的 1 CV问题中的噪声 以图像分类为例 对图像加入适量的噪声后再训练&#xff0c;识别准确率反而上升了 再以目标检测为例&#xff1a; 从遥感影像中做飞机检测&#xff0c;一般都是把飞机紧紧框住&#xff0c;然后做…

第十四届蓝桥杯第三期模拟赛 C/C++ B组 原题与详解

文章目录 一、填空题 1、1 找最小全字母十六进制数 1、1、1 题目描述 1、1、2 题解关键思路与解答 1、2 给列命名 1、2、1 题目描述 1、2、2 题解关键思路与解答 1、3 日期相等 1、3、1 题目描述 1、3、2 题解关键思路与解答 1、4 乘积方案数 1、4、1 题目描述 1、4、2 题解关…

js typeof instanceof 以及数据类型

js 的数据类型 JavaScript的数据类型分为两种&#xff1a;原始类型&#xff08;即基本数据类型&#xff09;和对象类型&#xff08;即引用数据类型&#xff09;&#xff1a;基本类型&#xff1a;String、Number、Boolean、Null、Undefined、Symbol(es6)引用类型&#xff1a;Ob…

【冲刺蓝桥杯的最后30天】day5

大家好&#x1f603;&#xff0c;我是想要慢慢变得优秀的向阳&#x1f31e;同学&#x1f468;‍&#x1f4bb;&#xff0c;断更了整整一年&#xff0c;又开始恢复CSDN更新&#xff0c;从今天开始更新备战蓝桥30天系列&#xff0c;一共30天&#xff0c;如果对你有帮助或者正在备…

工作日志day04

再次安装虚拟机时常见的不确定点 软件选择 安装位置 点击完成 设置用户名的时候可能与数字&#xff0c;以及强度有关 注销以管理员身份登录填写root用户名和自己设的密码 网络设置之后可以ping通 sudo yum -y install tree python -V查看版本信息 之后是配置python3.6 http…

【C++】内联函数auto范围for循环nullptr

&#x1f3d6;️作者&#xff1a;malloc不出对象 ⛺专栏&#xff1a;C的学习之路 &#x1f466;个人简介&#xff1a;一名双非本科院校大二在读的科班编程菜鸟&#xff0c;努力编程只为赶上各位大佬的步伐&#x1f648;&#x1f648; 目录前言一、内联函数1.1 内联函数概念1.2…

华为OD机试题,用 Java 解【数字加减游戏】问题

华为Od必看系列 华为OD机试 全流程解析+经验分享,题型分享,防作弊指南)华为od机试,独家整理 已参加机试人员的实战技巧华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典使用说明 参加华为od机试,一定要注意不…

计及需求响应的改进灰狼优化算法求解风、光、柴、储容量优化配置(Matlab代码实现)

&#x1f468;‍&#x1f393;个人主页&#xff1a;研学社的博客&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5;&#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密…

76 Python写入csv文件时出现空行_newline参数解决

76 Python写入csv文件时出现空行_newline参数解决 文章目录76 Python写入csv文件时出现空行_newline参数解决1. 准备工作2. with open 语句没有newline参数3. with open 语句有newline参数4. 总结1. 准备工作 在电脑D盘新建一个【76】文件夹。 用VScode编辑器打开【76】文件夹…

第1章 多线程基础

第1章 多线程基础 1.1.2 线程与进程的关系 进程可以看成是线程的容器&#xff0c;而线程又可以看成是进程中的执行路径。 1.2 多线程启动 线程有两种启动方式&#xff1a;实现Runnable接口&#xff1b;继承Thread类并重写run()方法。 执行进程中的任务时才会产生线程&a…

用Python写一个zidong发送直播弹幕脚本,让你在直播间霸屏

前言 现在直播这个东西可以说是哪哪都有&#xff0c;有些的直播还有看弹幕来进行抽奖活动&#xff0c;这不我表弟昨天晚上就碰上一个了 说是主播随机抽取一个弹幕抽奖&#xff0c;我表弟辛辛苦苦手动发送了一晚上的弹幕&#xff0c;结果啥也没中&#xff0c;怪可怜的 今天闲…

65 - 进程互斥锁的优化实现

---- 整理自狄泰软件唐佐林老师课程 文章目录1. 问题一1.1 当前实现的深入分析1.2 解决方案设计1.3 解决方案实现步骤1.4 编程实验&#xff1a;EnterCritical()重设计2. 问题二2.1 互斥锁的优化设计2.2 互斥锁的优化实现方案2.3 编程实验&#xff1a;互斥锁的优化实现3. 小结1.…

【C语言】每日刷题 —— 牛客

前言 大家好&#xff0c;今天带来一篇新的专栏 c_牛客&#xff0c;不出意外的话每天更新十道题&#xff0c;难度也是从易到难&#xff0c;自己复习的同时也希望能帮助到大家&#xff0c;题目答案会根据我所学到的知识提供最优解。 &#x1f3e1;个人主页&#xff1a;悲伤的猪大…

小白做什么兼职项目赚钱?宝妈拍短视频赚钱的方法

很多宝妈在家带孩子之余想做兼职赚点小钱&#xff0c;依靠互联网无疑是比较方便的途径&#xff0c;在刷单、微商等网上兼职成为过去式以后&#xff0c;很多宝妈选择了短视频创业。 宝妈怎么拍短视频&#xff1f; 宝妈因为要照顾宝宝还要兼顾家务&#xff0c;空闲的时间比较琐碎…

Rust Web入门(七):WebAssembly

本教程笔记来自 杨旭老师的 rust web 全栈教程&#xff0c;链接如下&#xff1a; https://www.bilibili.com/video/BV1RP4y1G7KF?p1&vd_source8595fbbf160cc11a0cc07cadacf22951 学习 Rust Web 需要学习 rust 的前置知识可以学习杨旭老师的另一门教程 https://www.bili…

5款电商团队必须会用的任务管理工具

随着企业数字化转型&#xff0c;高效率的团队协作和远程协同办公成为越来越多团队的强烈需求&#xff0c;今天说说电商团队&#xff0c;电商运营很大一个特点是多场景、跨部门、高频协作。并且要通过多平台和形式跟新兴媒体进行品宣争夺市场份额。 这种情形对跨部门的团队协作…

java基础学习 day50(内部类)

什么是内部类&#xff1f; 写在一个类里面的类就叫做内部类 什么时候用到内部类&#xff1f; B类表示的事物是A类的一部分&#xff0c;且B单独存在没有意义。 比如&#xff1a;汽车和发动机&#xff0c;ArrayList和迭代器&#xff0c;人和心脏 内部类的访问特点 内部类可以…

STM32U5开发(1)----通过 USART1 发送数据

概述 通过 USART1 发送一些数据。 最近在弄ST和GD的课程&#xff0c;需要样片的可以加群申请&#xff1a;6_15061293。 生成例程 使用STM32CUBEMX生成例程&#xff0c;这里使用NUCLEO-U575ZI开发板。 选择工程的时候&#xff0c;先不必选择加载了TrustZone。 样品申请 h…

STM32程序下载和启动方式

目录1 BOOT引脚配置和下载说明2 关于串口下载方式3 关于一按复位就跑代码4 关于下载调试速度5 关于三种启动方式5.1 FLASH启动5.2 系统存储器器启动5.3 SRAM启动6 关于程序的三种下载方式1 BOOT引脚配置和下载说明 BOOT0BOOT1程序运行ST-Link下载串口下载启动说明xx无0x√√用…

AList搭建网盘挂载硬盘并挂载网络资源(傻瓜式自配置教程)

AList搭建网盘挂载硬盘并挂载网络资源1.安装AList1.1 下载1.2 解压1.3 启动1.4 登录1.5 改密1.6 开机自启2.添加云盘存储2.1 添加阿里云盘2.2 阿里云刷新令牌2.3 查看云盘文件3.映射本地盘3.1 下载RaiDrive3.2 安装3.2 设置4.延伸参考资料&#xff1a; AList: https://alist.n…