Vue3知识点总结

目录

一.创建Vue2工程

1.使用 vue-cli 创建

2.使用 vite 创建

二.常用 Composition API

 setup

ref函数

 reactive函数

 计算属性与监视

1.computed函数

2.watch函数

3.watchEffect函数

 


一.创建Vue2工程

1.使用 vue-cli 创建

查看@vue/cli版本,确保@vue/cli版本在4.5.0以上

vue --version

安装或者升级你的@vue/cli 

npm install -g @vue/cli

 创建

vue create vue_test

启动 

cd vue_test
npm run serve

2.使用 vite 创建

  • 什么是vite?—— 新一代前端构建工具。

  • vite创建Vue3工程的优势:

    • 开发环境中,无需打包操作,可快速的冷启动。

    • 轻量快速的热重载(HMR)

    • 真正的按需编译,不再等待整个应用编译完成

创建

npm create vite@latest <project-name> 

选择vue

 

选择语言

 

 创建完之后如果在页面上找不到文件,有可能在用户目录里

进入工程目录

cd <project-name>

安装依赖 

npm install

运行 

npm run dev

二.常用 Composition API

 setup

1.理解:Vue3.0中一个新的配置项,值为一个函数。

2.setup是所有Composition API(组合API)“ 表演的舞台 ”

3.组件中所用到的:数据、方法等等,均要配置在setup中

4.setup函数的两种返回值:

        1.​​​若返回一个对象,则对象中的属性、方法, 在模板中均可以直接使用

        2.若返回一个渲染函数:则可以自定义渲染内容

5.注意点:

        1.尽量不要与Vue2.x配置混用               

                Vue2.x配置(data、methos、computed...)中可以访问到setup中的属性、方法

                但在setup中不能访问到Vue2.x配置(data、methos、computed...)

                如果有重名, setup优先

        2.setup不能是一个async函数,因为返回值不再是return的对象, 而是promise, 模板看不到return对象中的属性。(后期也可以返回一个Promise实例,但需要Suspense和异步组件的配合)

ref函数

作用:定义一个响应式的数据

语法: const xxx = ref(initValue)

        创建一个包含响应式数据的引用对象(reference对象,简称ref对象)

        JS中操作数据: xxx.value

        模板中读取数据: 不需要.value,直接:<div>{{xxx}}</div>

备注:

  • 接收的数据可以是:基本类型、也可以是对象类型

  • 基本类型的数据:响应式依然是靠Object.defineProperty()getset完成的

  • 对象类型的数据:内部 “ 求助 ” 了Vue3.0中的一个新函数——reactive函数

 reactive函数

        作用: 定义一个对象类型的响应式数据(基本类型不要用它,要用ref函数)

        语法:const 代理对象= reactive(源对象)接收一个对象(或数组),返回一个代理对象(Proxy的实例对象,简称proxy对象)

        reactive定义的响应式数据是“深层次的”

        内部基于 ES6 的 Proxy 实现,通过代理对象操作源对象内部数据进行操作

 计算属性与监视

1.computed函数

与Vue2.x中computed配置功能一致

写法:

import {computed} from 'vue'setup(){...//计算属性——简写let fullName = computed(()=>{return person.firstName + '-' + person.lastName})//计算属性——完整let fullName = computed({get(){return person.firstName + '-' + person.lastName},set(value){const nameArr = value.split('-')person.firstName = nameArr[0]person.lastName = nameArr[1]}})
}
2.watch函数

与Vue2.x中watch配置功能一致

注意:

  • 监视reactive定义的响应式数据时:oldValue无法正确获取、强制开启了深度监视(deep配置失效)

  • 监视reactive定义的响应式数据中某个属性时:deep配置有效

//情况一:监视ref定义的响应式数据
watch(sum,(newValue,oldValue)=>{console.log('sum变化了',newValue,oldValue)
},{immediate:true})//情况二:监视多个ref定义的响应式数据
watch([sum,msg],(newValue,oldValue)=>{console.log('sum或msg变化了',newValue,oldValue)
}) /* 情况三:监视reactive定义的响应式数据若watch监视的是reactive定义的响应式数据,则无法正确获得oldValue!!若watch监视的是reactive定义的响应式数据,则强制开启了深度监视 
*/
watch(person,(newValue,oldValue)=>{console.log('person变化了',newValue,oldValue)
},{immediate:true,deep:false}) //此处的deep配置不再奏效//情况四:监视reactive定义的响应式数据中的某个属性
watch(()=>person.job,(newValue,oldValue)=>{console.log('person的job变化了',newValue,oldValue)
},{immediate:true,deep:true}) //情况五:监视reactive定义的响应式数据中的某些属性
watch([()=>person.job,()=>person.name],(newValue,oldValue)=>{console.log('person的job变化了',newValue,oldValue)
},{immediate:true,deep:true})//特殊情况
watch(()=>person.job,(newValue,oldValue)=>{console.log('person的job变化了',newValue,oldValue)
},{deep:true}) //此处由于监视的是reactive素定义的对象中的某个属性,所以deep配置有效
3.watchEffect函数

watch:既要指明监视的属性,也要指明监视的回调。

watchEffect:不用指明监视哪个属性,监视的回调中用到哪个属性,那就监视哪个属性

watchEffect与omputed:

  • computed注重的计算出来的值(回调函数的返回值),所以必须要写返回值。

  • watchEffect更注重的是过程(回调函数的函数体),所以不用写返回值。

//watchEffect所指定的回调中用到的数据只要发生变化,则直接重新执行回调。
watchEffect(()=>{const x1 = sum.valueconst x2 = person.ageconsole.log('watchEffect配置的回调执行了')
})

 

 

 

 

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《计算机视觉处理设计开发工程师》

《计算机视觉处理设计开发工程师》 了解到一项2024年企业和个人都在报考的工业和信息化部电子工业标准化研究院颁发的证书&#xff0c;分享给大家&#xff1a; 为进一步贯彻落实中共中央印发《关于深化人才发展体制机制改革的意见》和国务院印发《关于“十四五”数字经济发展规…

力扣59. 螺旋矩阵 II

文章目录 力扣59. 螺旋矩阵 II示例思路代码实现总结收获 力扣59. 螺旋矩阵 II 示例 思路 本题并不涉及到什么算法&#xff0c;就是模拟过程&#xff0c;但却十分考察对代码的掌控能力&#xff0c;容易出错&#xff01; 而求解本题要坚持循环不变量原则。就能很大程度避免错误 …

火山引擎DataLeap:助你实现从数据研发1.0到数据研发3.0的跨越

更多技术交流、求职机会&#xff0c;欢迎关注字节跳动数据平台微信公众号&#xff0c;回复【1】进入官方交流群 近日&#xff0c;火山引擎开发者社区 Meetup 第 12 期暨超话数据专场在深圳举办&#xff0c;本次活动主题为“数智化转型背景下的火山引擎大数据技术揭秘 ”&#x…

css+html横向滚动+固定宽

没什么好说的&#xff0c;快上代码&#xff01; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Do…

【02】GeoScene海图生产环境创建

1.1 海图生产环境 GeoScene中的企业级海事制图由中央航海信息系统数据库&#xff08;NIS库&#xff09;来处理&#xff0c;将之前传统桌面产品库&#xff08;PL库&#xff09;产品管理方面的能力已经移植到NIS数据库&#xff0c;以ProductDefinitions、ProductCoverage、Produ…

【Avue】点击新增再点击表单得radio选项出现新表单,且编辑页面关不掉新表单处理方法

一、问题描述 1、点击新增 2、 点击radio选择值 1、点击否得时候没反应 2、点击是得时候出现新表单 2.1、旧代码 {label: 是否危险源,prop: isBigdanger,searchLabelWidth: 120,overHidden: true,span: 24,rules: [{required: true,message: 请选择是否重大危险源,trigger: bl…

【精选】计算机网络教程(第7章网络安全)

目录 前言 第7章网络安全 1、公钥 2、私钥 3、数字签名 前言 总结计算机网络教程课程期末必记知识点。 第7章网络安全 1、公私密钥和对称密钥 公私密钥&#xff08;或非对称密钥&#xff09;和对称密钥是在密码学中用于加密和解密数据的两种不同的密钥类型。 公私密钥…

浅析PAM市场价值

随着全球数字化蓬勃发展&#xff0c;云计算、人工智能、大数据、5G等技术的应用范围不断扩大&#xff0c;在企业运用新技术提高自身效率的同时也面临着更多由新技术诱发的网络威胁&#xff0c;全球网络威胁形势愈发严峻。网络攻击行为日趋复杂&#xff0c;构建全面的安全防护体…

ROS机器人入门

http://www.autolabor.com.cn/book/ROSTutorials/ 1、ROS简介 ROS 是一个适用于机器人的开源的元操作系统。其实它并不是一个真正的操作系统&#xff0c;其 底层的任务调度、编译、寻址等任务还是由 Linux 操作系统完成&#xff0c;也就是说 ROS 实际上是运 行在 Linux 上的次级…

算法专题二:滑动窗口

算法专题二&#xff1a;滑动窗口 一.长度最小的子数组&#xff1a;1.思路一&#xff1a;暴力解法2.思路二&#xff1a;滑动窗口双指针3.GIF题目解析&#xff1a;思路一&#xff1a;思路二&#xff1a; 二.无重复字符的最长子串&#xff1a;1.思路一&#xff1a;滑动窗口2.GIF题…

Unity 如何通过2D Sprite切割一张图为多张

1、理解 在一些2D游戏开发中&#xff0c;我们常常使用2D Sprite把一张大图切割成多个小图使用。 这样做有不少好处&#xff0c;首先&#xff0c;通过精准使用小图&#xff0c;能够一定程度上节省内存&#xff0c;提高渲染性能。 其次把同类的小图做成一张大图在切割使用会更…

【AI基础设施】智算场景的资源管理系统与未来展望

高性能计算与智算场景 首先澄清两个概念&#xff0c;高性能计算与智算场景&#xff0c;高性能计算主要是面向天气预测、生物计算、材料计算等场景&#xff0c;而最近几年很火的智算主要是面向AI场景的计算&#xff0c;如语音识别、图像识别、自动驾驶等场景&#xff0c;我们可…