Vue3学习笔记(上)

Vue3学习笔记(上)

Vue3的优势:

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

创建vue3项目

create-vue是vue官方新的脚手架工具,底层切换到了vite(下一代构建工具),为开发提供急速响应。

  1. 前提环境条件:

    已安装16.0或更高版本的Node.js

    node -v

  2. 创建一个Vue应用

    npm init vue@latest这一指令将会安装并执行create-vue

项目目录与关键文件

  1. vite.config.js - 项目的配置文件(基于vite的配置)

  2. package.json - 项目包(核心依赖项变成了Vue3)

  3. main.js - 入口文件(createApp函数创建应用实例)

  4. app.vue - 根组件(SFC单文件组件script - template)

    变化一:脚本script和模板template顺序调整

    变化二:模板template不再要求唯一根元素

    变化三:脚本script添加setup标识支持组合式API

  5. index.html - 单页入口(提供id为app的挂载点)

组合式API

setup选项

原始写法:

<script>
import HelloWorld from './components/HelloWorld.vue'
import TheWelcome from './components/TheWelcome.vue'
export default {setup () {const message = 'hello'const logmsg = () => {console.log(message)}return {message,logmsg}}
}
</script>

语法糖写法:

<script setup>
import HelloWorld from './components/HelloWorld.vue'
import TheWelcome from './components/TheWelcome.vue'
export default {const message = 'hello'const logmsg = () => {console.log(message)}
}
</script>

setup语法糖原理:
在这里插入图片描述

执行时机:比beforeCreate还要早

在这里插入图片描述

注意:

  1. setup函数中,获取不到this(this指向undefined,因为setup函数创建比beforeCreate早,不指向组件实例)
  2. 数据和函数需要在setup最后return,才能在模板中应用
  3. 语法糖写法可以简化代码

reactive函数

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

核心步骤:

<script setup>
// 导入
import { reactive } from 'vue'// 执行函数 传入函数 变量接收
const state = reactive(对象类型数据)
</script>
  1. 从vue包中导入reactive函数
  2. <script setup>中执行reactive函数并传入类型为对象的初始值,并使用变量接收返回值

ref函数

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

本质:在原有传入数据的基础上,外层包了一层对象,包成了复杂数据类型

底层:包成复杂数据类型之后,再借助reactive实现的响应式

注意点:

  1. 脚本中访问数据,需要通过 .value
  2. 在template中,不需要加 .value

核心步骤:

<script setup>
// 导入
import { ref } from 'vue'// 执行函数 传入函数 变量接收
const count = ref(简单类型或复杂类型数据)
</script>
  1. 从vue包中导入ref函数
  2. <script setup>中执行ref函数并传入初始值,使用变量接收ref函数的返回值

computed

计算属性基本思想和vue2的完全一致,组合式API下计算属性只是修改了写法

<script setup>
// 导入
import { computed } from 'vue'// 执行函数 传入函数 变量接收
const computeddState = computed(() => {return 基于响应式数据做计算之后的值
})
</script>

核心步骤:

  1. 导入computed函数
  2. 执行函数在回调参数中return基于响应式数据做计算的值,用变量接收

注意:

  1. 计算属性中不应该有”副作用”,比如异步请求、修改dom
  2. 避免直接修改计算属性的值,计算属性应该是只读的,特殊情况可以配置 get set

watch

作用:侦听一个或多个数据的变化,数据变化是执行回调函数。

  1. 导入watch函数
  2. 执行watch函数传入要侦听的响应式数据(ref对象)和回调函数

侦听单个数据:

<script setup>
// 导入
import { watch, ref } from 'vue'
const count = ref(0)// 调用watch 侦听变化
watch(count, (newValue, oldValue) => {console.log(newValue, oldValue)
})
</script>

侦听多个数据:

<script setup>
// 导入
import { watch, ref } from 'vue'
const count = ref(0)
const name = ref('zs')// 调用watch 侦听变化
watch([count, name], ([newCount, oldCount], [newName, oldName]) => {console.log(newCount, oldCount, newName, oldName)
})
</script>
immediate

说明:在侦听器创建时立即触发回调,响应式数据变化之后继续执行回调。

<script setup>
// 导入
import { watch, ref } from 'vue'
const count = ref(0)// 调用watch 侦听变化
watch(count, (newValue, oldValue) => {console.log(newValue, oldValue)
}, {immediate: true
})
</script>
deep

watch默认进行的是浅层监视,开启deep: true才能监视到复杂数据类型内部数据的变化。

<script setup>
// 导入
import { watch, ref } from 'vue'
const userinfo = ref({name: 'zs',age: 18
})// 调用watch 侦听变化
watch(userinfo, (newValue, oldValue) => {console.log(newValue, oldValue)
}, {deep: true
})
</script>
精确侦听到对象内的某个属性
<script setup>
// 导入
import { watch, ref } from 'vue'
const userinfo = ref({name: 'zs',age: 18
})// 调用watch 侦听变化
watch(() => userinfo.value.age, (newValue, oldValue) => {console.log(newValue, oldValue)
})
</script>

Vue3的声明周期

选项式API组合式API
beforeCreate/createdsetup
beforeMountonBeforeMount
mountedonMounted
beforeUpdateonBeforeUpdate
updatedonUpdated
beforeUnmountonBeforeUnmount
unmountedonUnmounted

组合式API的生命周期函数写成函数的调用方式,可以调用多次,并不会冲突,而是按照顺序依次调用。

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

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

相关文章

看懂本文,入门神经网络Neural Network

神经网络&#xff08;Neural Network&#xff09; 1.1图片 每一个图片都是三维数组&#xff0c;每个像素的值为0-255&#xff0c;如 训练集Training Dataset&#xff1a;“上课学的知识”&#xff0c;用于训练模型得到参数 验证集Validation Dataset&#xff1a;“课后习题”…

Zoho Books助外贸,应收账款简化管

ZohoBooks财务管理软件助外贸企业精准管理客户信息&#xff0c;简化跨境开票&#xff0c;集成支付网关自动对账&#xff0c;智能提醒跟进账款&#xff0c;提供强大报表分析功能&#xff0c;支持多币种和当地税法&#xff0c;促进财务健康与资金回笼。 一、精准的客户信息管理 …

保姆级教程!!教你通过【Pycharm远程】连接服务器运行项目代码

小罗碎碎念 这篇文章主要解决一个问题——我有服务器&#xff0c;但是不知道怎么拿来写代码&#xff0c;跑深度学习项目。确实&#xff0c;玩深度学习的成本比较高&#xff0c;无论是前期的学习成本&#xff0c;还是你需要具备的硬件成本&#xff0c;都是拦路虎。小罗没有办法…

作业调度和程序装入内存

作业调度 我们知道&#xff0c;磁盘上的可执行程序只有装入内存&#xff0c;成为进程才可以运行。在磁盘上有许多的可执行程序等待被操作系统唤入内存执行&#xff0c;我们把可执行程序在磁盘上的调度称之为作业调度。 注意&#xff1a;这种说法听起来好像是作业在磁盘上的调…

广义布里渊区方程推导过程中一个公式的理解

是对DOI: 10.1103/PhysRevLett.123.066404补充材料公式(S25)的理解 clear;clc;close all q2; N1;Mq*N; syms LMatsym(zeros(2*M,2*M));for ii1:MTp[];for jj1:2*M%eval([syms , f,num2str(ii),num2str(jj)]);eval([syms ,f,num2str(ii),_beta,num2str(jj),_ES])%eval([temp,f,…

嵌入式linux中HDMI驱动操作方法

大家好,今天主要给大家分享一下,linux系统里面的HDMI驱动实现方法。 第一:HDMI基本简介 HDMI 全称为 High Definition Multimedia Interface,也就是高清多媒体接口,是一个纯数字的音视频传输接口,通过一根线同时发送音视频数据。目前在电视、显示器、电脑、机顶盒等领域得…

边缘的检测

边缘检测效果&#xff0c;是一种用于突出图像中的边缘&#xff0c;使物体的轮廓更加明显的图像处理技术&#xff0c;边缘检测的主要目的是找到图像中亮度变化显著的区域&#xff0c;这些区域通常对应于物体的边界&#xff0c;边缘检测相当于利用 Shader 代码自动给屏幕图像进行…

架构篇(05理解架构的服务演化)

目录 学习前言 一、服务演化简介 二、方向一&#xff1a;架构服务化 单体分层架构 面向服务架构 - SOA 微服务架构 - Microservices 云原生架构 - Cloud Native 三、方向二&#xff1a;部署容器编排化 虚拟机 容器 Kubernetes 与编排 四、参考文献 学习前言 Kubern…

娶老婆花了30万彩礼,结婚2个月,她前夫给我20万,让我老婆和他生孩子!

我叫李志强&#xff0c;今年32岁&#xff0c;在一家物流公司当经理。去年我娶了我老婆张美玲&#xff0c;为了这场婚礼&#xff0c;我花了30万彩礼。美玲比我小3岁&#xff0c;是个护士&#xff0c;长得漂亮又温柔&#xff0c;我觉得自己找到了真爱。 结婚前&#xff0c;美玲就…

基于SpringBoot的国风服装商城系统+LW示例参考

1.项目介绍 系统角色&#xff1a;管理员、普通用户功能模块&#xff1a;管理员&#xff08;用户管理、商品管理、分类管理、订单管理、系统管理、在线客服等&#xff09;&#xff0c;普通用户&#xff08;登录注册、个人中心、评价管理、收藏管理、订单管理等、咨询服务等&…

GB/T 43206—2023信息安全技术信息系统密码应用测评要求(五)

文章目录 附录AA.1 概述A.2 密钥产生A.3 密钥分发A.4 密钥存储A.5 密钥使用A.6 密钥更新A.7 密钥归档A. 8 密钥撤销A.9 密钥备份A.10 密钥恢复A.11 密钥销毁 附录B附录C 附录A A.1 概述 密钥管理对于保证密钥全生存周期的安全性至关重要 ,可以保证密钥(除公开密钥外) 不被非授…

jmeter常用配置元件介绍总结之前置处理器、测试片段

系列文章目录 安装jmeter jmeter常用配置元件介绍总结之前置处理器、测试片段 6.前置处理器6.1用户参数6.2取样器超时6.3.测试片段6.4JSR223 PreProcessor6.5.JDBC PreProcessor 6.前置处理器 在取样器请求之前执行的操作&#xff0c;优先级比取样器高&#xff0c;用来处理一些…

【IT人物系列】之Java之父

前言 当今世界由无数的人构成&#xff0c;其中有些人做了一些改变世界的事情&#xff0c;比如&#xff1a;乔布斯缔造了Apple帝国&#xff0c;‌詹姆斯高斯林创造了Java语言等。正是这些优秀的人做的这些优秀的事情&#xff0c;让这个世界更加美好。因此他们值得铭记。 从今天…

鸿蒙开发基础入门

一、熟悉目录结构 二、ArkTS语法介绍 ArkTS是为构建高性能应用设计的编程语言&#xff0c;语法继承TypeScript&#xff0c;并进行了优化&#xff0c;拥有更强的类型约束ArkTS提供了声明式UI范式&#xff0c;符合移动开发的最新趋势 ArkTS摒弃了部分影响运行时的性能的语法&…

大数据机器学习算法和计算机视觉应用01:博弈论基础

Game Theory 2-player Zero Sum GameMinimax Optimal StrategiesVon Neumann’s Minimax TheoremLower Bounds for Randomized AlgorithmsGeneral sum games, Nash quilibria (p.s:该系列是国际交流学术公开课的笔记&#xff0c;主讲人是Carnegie Melon University的终身教授…

如何安装和配置JDK17

教程目录 零、引言1、新特性概览2、性能优化3、安全性增强4、其他改进5、总结 一、下载安装二、环境配置三、测试验证 零、引言 JDK 17&#xff08;Java Development Kit 17&#xff09;是Java平台的一个重要版本&#xff0c;它带来了许多新特性和改进&#xff0c;进一步提升了…

【C++进阶】智能指针的使用及原理(1)

1. 智能指针的使用场景分析 下面程序中我们可以看到&#xff0c;new了以后&#xff0c;我们也delete了&#xff0c;但是因为抛异常导&#xff0c;后面的delete没有得到执行&#xff0c;所以就内存泄漏了&#xff0c;所以我们需要new以后捕获异常&#xff0c;捕获到异常后delete…

计算机课程管理:Spring Boot实现的工程认证路径

摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了基于工程教育认证的计算机课程管理平台的开发全过程。通过分析基于工程教育认证的计算机课程管理平台管理的不足&#xff0c;创建了一个计算机管理基于工程教育认…

【人工智能训练师】综合案例 HBase与Hive的集成

9.1 HBase与Hive 任务目的 简单回顾了解hive 了解hive与hbase的区别 任务清单 任务1&#xff1a;hive简介 任务2&#xff1a;hbase与hive的区别 任务步骤 任务1&#xff1a;hive简介   什么是Hive呢&#xff1f; Apache Hive是一个构建在Hadoop基础设施之上的数据仓库。 构…

基于STM32的图像处理监控系统

1. 引言 随着物联网和智能家居的普及&#xff0c;图像处理和监控系统在安全防范、家庭监控等方面应用越来越广泛。本项目旨在使用STM32开发板和OV7670摄像头模块搭建一个简单的图像处理监控系统。系统能够捕获图像并进行基本的处理与展示。 2. 环境准备2.1 硬件需求 - STM32开…