目录
Vue2核心知识
一、Vue实例
1.new Vue(options)
(1)el
(2)data
(3)props
(4)methods
(5)computed
(6)watch
(7)template
2.MVVM模型
(1)模型(Model)
(2)视图(View)
(3)视图模型(View Model)
二、模板语法
1.插值语法
2.指令语法
(1)v-model
(2)v-bind
(3)v-if、v-else、v-else-if
(4)v-show
(5)v-for
(6)v-on
(7)v-text
三、样式绑定
1.class样式绑定
(1)字符串写法
(2)对象写法
(3)数组写法
2.style样式绑定
(1)字符串写法
(2)对象写法
(3)数组写法
四、列表渲染
1.v-for
(1)遍历数组
(2)遍历对象
(3)遍历字符串
(4)遍历指定次数
(5)特殊情况(均不报错)
2.key的作用
3.数组更新检测
四、事件绑定
1.事件绑定
2.事件对象
3.事件传参
(1)不传递参数
(2)传一个参数
(3)传多个参数
(4)传参+事件对象
4.事件修饰符
(1).stop
(2).prevent
(3).once
5.键盘事件别名
五、生命周期
(1)何为生命周期?
(2)整体流程
六、组件化
1.什么是组件?
2.定义组件
3.全局组件
4.局部组件
5.关于组件名
(1) 一个单词组成
(2)多个单词组成
6.VueComponent
七、slot插槽
1.默认插槽
2.具名插槽
3.作用域插槽
八、mixin 混入
1. 什么是混入
2.优先级
3.局部mixin
4.全局mixin
Vue 3 核心知识
一、Vue3 简介
1.性能的提升
2.源码的升级
3.拥抱TypeScript
4.新的特性
二、创建工程
1.基于 vue-cli 创建(不推荐)
2. 基于 vite 创建(推荐)
三、API 风格
1.创建app
2.OptionsAPI 与 CompositionAPI
四、setup
1.setup是什么
2.setup的特点
3.setup的参数
4.setup的返回值
5.与Options API的关系
6.setup语法糖
五、响应式数据
1.ref
2.reactive
3.ref 对比 reactive
六、计算与监视
1.computed
2.watch
(1)明确:Vue3中的watch只能监视四种数据
(2)监视各种情况
七、对比Vue2和Vue3响应式原理
1. Vue2的响应式
2.Vue3的响应式
八、自定义hooks
1.什么是hook?
2.自定义hook的优势
九、props
十、生命周期的改变
1.Vue2
2.Vue3
3.有两个被更名:
十一、新的组件
1.Teleport
2.Fragment
3.Suspense
十二、其他
1.全局API转移到应用对象
2.data选项应始终被声明为一个函数3.移除keyCode支持作为 v-on 的修饰符
Vue2简介:
Vue.js是一款轻量级的MVVM(Model-View-ViewModel)框架,由尤雨溪在2014年开发并推出,目前已经成为前端开发领域中比较流行的框架之一。Vue.js的主要特点包括:
双向数据绑定:Vue.js采用了Virtual DOM技术,能够将视图和模型关联起来,实现数据的双向绑定,当数据变化时,视图会自动更新。
组件化:Vue.js将页面划分为多个组件,每个组件具有独立的结构、样式和逻辑,方便代码的复用和维护。
模板语法:Vue.js使用简洁明了的模板语法,可以通过指令、过滤器、事件处理等方式,方便地对模板进行数据绑定和操作。
生命周期钩子:Vue.js提供了一系列的生命周期钩子函数,在组件初始化、挂载、更新和销毁等不同阶段,可以执行相应的操作和逻辑。
插件化:Vue.js支持插件机制,可以通过引入第三方插件或自定义插件,扩展Vue.js的功能和能力。
Vue.js 2.x版本相对于1.x版本来说,主要提升了性能、增加了一些新的特性和语法糖,并且同时兼容旧版。Vue.js 2.x版本还支持服务端渲染,能够提高加载速度和SEO效果
指定Vue实例挂载的元素,可以是一个CSS选择器字符串,或一个DOM元素。
定义数据
1. 值可以为对象,也可以为函数,但组件中必须是函数。
2. data中尽量不要用箭头函数。
3. data中后续动态添加的新属性,Vue将无法监听这些属性的变化(不是响应式的),可以使用$set()解决该问题。
接收父组件传递的属性
1.子组件不能直接修改接收到的props的值——单项数据流。
2.三种接收方式
定义方法
1.Vue所管理的函数,不要用箭头函数定义。
2.非Vue所管理的函数,一般用箭头函数定义。
Vue.js中所管理的函数,比如组件的生命周期函数、计算属性等等,如果用箭头函数定义,会存在一些问题:
- 上下文绑定问题:箭头函数没有自己的 this,会从上层作用域继承 this,因此在 Vue.js中,使用箭头函数定义组件的生命周期函数或计算属性时,this 将指向全局对象,而不是 Vue 实例,这就导致了一些无法预期的问题。
- 无法访问实例属性:Vue.js 中的组件生命周期函数和计算属性,需要访问组件实例中的数据和方法,如果使用箭头函数,则无法访问this实例,也就不能访问实例中的属性和方法。
因此,在 Vue.js 中,通常建议不要使用箭头函数来定义组件的生命周期函数或计算属性。而对于非 Vue.js 所管理的函数,例如普通 JS 函数、事件回调函数等,可以使用箭头函数定义,因为这些函数不需要访问 Vue 实例中的属性和方法,也不存在上下文绑定的问题。
3.this指向
计算属性
用于监听数据
用于定义 Vue 实例的模板。
可以是:从服务器获取的数据、本地存储的数据。
视图通常由HTML模板表示,用于将模型的数据渲染到视图上。
视图和模型之间的桥梁,它负责处理视图和模型之间的通信和交互。
在模板中输出变量,可以写 JavaScript 表达式。例如:{{1+2}},{{a}},{{str.toUpperCase()}},但不能写语句
v-model 是 Vue.js 官方提供的一个指令,用于在组件中快速的进行双向数据绑定。在组件之间进行数据通信时,也可以利用 v-model 实现双向数据绑定,具体实现步骤如下:
- 子组件中定义props属性:首先在子组件中定义一个 props 属性,用于接收父组件传递过来的数据和事件回调函数。
- 使用 v-model 进行绑定:在父组件中使用 v-model 指令,将数据绑定到子组件的 props 上。此时,v-model 指令默认会将一个名为 value 的 prop 和一个名为 input 的事件传递给子组件。
- 子组件中定义事件回调函数:在子组件中,需要定义一个名为 input 的自定义事件,用于触发数据的更新。当子组件中的数据发生变化时,通过调用 $emit() 方法触发 input 事件,并将新的数据作为参数传递给父组件。
- 父组件中监听事件:在父组件中,通过监听子组件传递上来的 input 事件,实现对数据的更新。当子组件中的数据发生变化时,input 事件将会被触发,并将新的数据传递给父组件。
简写为:将Vue实例的数据,绑定到元素的属性上。绑定的数据可以是属性或计算属性。
用于根据条件来添加或移除元素。
根据条件来控制元素的显示和隐藏。通过修改元素的display CSS属性来实现,元素始终存在于DOM中。
用于循环渲染列表中的元素,下面的【列表渲染】中会详细说。
简写为@,用于监听DOM事件,并触发Vue实例中对应的方法,可以通过指令参数传递事件名,也可以使用修饰符来对事件进行处理,下面的【事件处理】中会详细说。
用于将数据渲染到元素的文本内容中。v-text会将数据转换为字符串,而v-html会解析数据中的HTML标签。
:class="xxx",要绑定的样式,类名不确定。
:class="{active:xxx}",要绑定的样式,个数确定、类名确定,但不确定用不用。
:class="[xxx,xxx,xxx]",要绑定的样式,个数、类名都不确定。
:style="xxx",字符串写法。
:style="xxx",对象写法适用于:样式的属性名确定,但值不确定。
:style="xxx",对象写法适用于:样式的属性名确定,但值不确定。
{{item}}
{{value}} - {{key}} - {{index}}
{{char}} - {{index}}
{{number}} - {{index}}
尚硅谷
尚硅谷
尚硅谷
尚硅谷
1.提高性能:
key属性帮助Vue跟踪每个节点的身份,当数据发生变化时,Vue可以更准确地确定哪些节点是新创建的、被修改的或被删除的。Vue通过比较新旧节点的key来最小化DOM操作,提高性能。(diff算法)
⭕注意点:key具有唯一性,最好使用唯一的标识符,若后续有破坏顺序的操作,一定要避免使用随机数或索引值。
Vue中操作数组,一定要用这7个数组的变更方法
使用 v-on:xxx 或 @xxx 绑定事件,xxx是事件名,同原生 DOM 事件名。
Vue在触发事件回调时,会主动的给我们传入一个参数 —— event(事件对象)。
@click="show" ,show 方法会收到一个event(事件对象)。
@click="show(6)" ,show方法只会收到一个6。
@click="show(6,7,8)" ,show方法会收到:6、7、8。
@click="show($event,6)",show方法会收到:event、6。
阻止事件冒泡。使用.stop修饰符可以阻止事件向上冒泡,即停止事件传播到父元素。
阻止默认事件。使用.prevent修饰符可以阻止元素的默认行为,例如阻止表单提交或链接跳转等。
只触发一次事件处理函数。使用.once修饰符可以确保事件处理函数只执行一次,之后会自动解绑。
在特定时刻自动执行的函数,(又称周期函数、钩子函数)
每个组件都有自己的结构、样式和行为,并且可以在应用程序中独立使用或与其他组件组合在一起形成更大的功能。组件具备复用性,可以使用多次。
Vue.extend(options)
其中的 options 和 new Vue(options) 几乎一样,但也有点小区别:
① 组件配置中不能写el。
② 组件配置中data必须写成函数。
注册方式:Vue.component('组件名',{})。
特点:全局组件只要定义,随处可以使用。
注册方式:在父组件里new Vue({components:{Hello:Hello}})。
特点:只能在其父组件中使用。
第一种写法:(首字母小写):school
第二种写法:(首字母大写,推荐):School
第一种写法:kebab-case命名,例如:atguigu-school
第二种写法:CamelCase命名,例如:AtguiguSchool
组件的本质是一个构造函数,名为 VueComponent
VueComponent是 Vue.extend() 生成的
Vue 和 VueComponent 的关系
父组件写法
你好啊
子组件写法
default value
概念:一个组件里,可以设置多个插槽,然后在父组件里可以写多个来填充这些插槽。
父组件:
子组件
当子组件的具体标签输出方式,要有父组件决定时,可以使用作用域插槽。
父组件
{{parmas.games}}
子组件
混入(mixin)是一种用于在多个组件之间共享代码的技术。使用混入,您可以定义一组可重用的逻辑,然后将其混入到需要该逻辑的组件中。这样可以避免代码重复,提高代码的可维护性和可重用性。
mixins:[myMixin]
Vue.mixin( )
⭕特别注意:Vue3 中尽量避免使用mixin,因为可以使用 CompositionAPI 来代替,可维护性更高。
1️⃣ Options API 的弊端:每个功能的:数据、方法、计算属性等,是分散在:data、methods、computed配置中的,若想新增或者修改一个需求,就需要分别修改:data、methods、computed,不便于代码的维护和复用。
2️⃣ Composition API 的优势:可以用函数的方式,更加优雅的组织代码,让相关功能的代码更加有序的组织在一起。
setup 是Vue3中一个新的配置项,值是一个函数,它是 Composition API “表演的舞台”,组件中所用到的:数据、方法、计算属性、监视......等等,均配置在setup中。
1️⃣props
2️⃣context
对象类型
let car = reactive({ name:'奔驰' ,price:'50W'})
1️⃣ref
2️⃣reactive
使用原则:
//引入computed
import {computed} from 'vue'
//创建一个计算属性
let fullName = computed({})
1. ref对象。
2.响应式对象 (reactive定义的对象)
3.函数返回一个值
4.一个包含上述内容的数组
1️⃣监视 ref 定义的【基本类型】数据,则默认监视的就是value值。
2️⃣监视 reactive 定义的【响应式对象】,注意点有:
3️⃣监视 reactive 定义的【响应式对象】中的某个数据,注意有:
4️⃣监视 ref 定义的【对象类型】数据,注意点如下:
5️⃣ 监视上述的多个数据
(1)核心原理:
(2)存在的问题:
核心原理:
Reflect - JavaScript | MDNReflect 是一个内置的对象,它提供拦截 JavaScript 操作的方法。这些方法与 proxy handler (en-US) 的方法相同。Reflect 不是一个函数对象,因此它是不可构造的。https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Reflect
本质是一个函数,把setup函数中使用的Composition API进行了封装,类似于vue2.x中的mixin。
复用代码, 让setup中的逻辑更清楚易懂。
新的接收方式(配合TS)
beforeDestroy改名为 beforeUnmount
destroyed改名为 unmounted
在Vue3中: 组件可以没有根标签, 内部会将多个标签包含在一个Fragment虚拟元素中
eleport 是一种能够将我们的组件 HTML 结构移动到指定位置的技术。
等待异步组件时渲染一些额外内容,让应用有更好的用户体验
使用更加语义化的 key 修饰符来监听键盘事件。