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

news/2024/11/13 4:08:30/

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.ppmy.cn/news/31104.html

相关文章

规划数据指标体系方法(下)——新海盗模型

前面已经跟大家分享了规划数据指标体系的两种方法—— OSM 和 UJM 模型&#xff0c;分别从目标-策略以及用户旅途的角度阐述了规划数据指标体系的过程。今天我来跟大家分享最后一种规划数据指标体系的方法——新海盗模型。 了解新海盗模型 海盗模型&#xff0c;即 AARRR 模型&…

Qt广告机服务器(上位机)

目录功能结构adSever.promain.cpptcp_MSG.h 共用Tcp传输信息adsever.h 服务器adsever.cpp 服务器addate.h 时间处理addate.cpp 时间处理adtcp.h 客户端Socket处理adtcp.cpp 客户端Socket处理client.h 客户端信息类client.cpp 客户端信息类admsglist.h 信息记录模块admsglist.cp…

【Java开发】JUC进阶 05:函数式接口、ForkJoin

1 四大函数式接口函数式接口&#xff1a;只有一个抽象方法的接口&#xff0c;只要是函数式接口&#xff0c;就可以用lambda表达式简化例如Runnable&#xff1a;FunctionalInterface public interface Runnable {public abstract void run(); }框架底层大量应用函数式接口&#…

7天收割10个offer,软件测试面试题 (项目经验问题+回答)(超级全细)

目录&#xff1a;导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09;前言 1、简单介绍下最近做…

【动态规划】

动态规划1引言题目509. 斐波那契数70. 爬楼梯746. 使用最小花费爬楼梯小结53. 最大子数组和结语引言 蓝桥杯快开始了啊&#xff0c;自从报名后还没认真学过算法有(>﹏<)′&#xff0c;临时抱一下佛脚&#xff0c;一起学学算法。 题目 509. 斐波那契数 斐波那契数 &am…

【数据结构】单链表:头部操作我很行,插入也不用增容!!!

单链表 文章目录单链表1.链表1.1链表的概念和结构1.2链表的分类2.单链表的模拟实现2.1单链表的打印2.2单链表的尾插2.3单链表的头插2.4单链表的尾删2.5单链表的头删2.6单链表的查找2.7单链表的中间插入(在结点前插入)2.8单链表的中间删除(删除该结点)2.9单链表的中间插入(在结点…

机智云目前我用过最便捷的物联网快速开发方案

GE211 MINI DTU上手来看&#xff0c;是一款尺寸比较小巧的模块&#xff0c;适合放置在几乎所有白色家电中&#xff0c;通过ph2.0端子&#xff08;注意不要买错&#xff09;引出了5v、gnd、tx、rx。可以说是非常方便了。下面正式开始我们的接入流程&#xff1a;首先注册一个机智…

Elasticsearch 核心技术(六):内置的 8 种分词器详解 + 代码示例

❤️ 博客主页&#xff1a;水滴技术 &#x1f680; 支持水滴&#xff1a;点赞&#x1f44d; 收藏⭐ 留言&#x1f4ac; &#x1f338; 订阅专栏&#xff1a;大数据核心技术从入门到精通 文章目录一、内置分词器1. Standard&#xff08;标准分词器&#xff09;英文示例中文示例…