coderwhy的vue3课程笔记01-基础预语法
课程资源地址:百度网盘
链接:https://pan.baidu.com/s/1GlPOgb1yv6HJrp_GWQ8ZFg?pwd=fo3w
提取码:fo3w
--来自百度网盘超级会员V6的分享
v-once:用于指定元素或者组件只渲染一次
当数据发生变化时,元素或者组件以及其所有的子元素将视为静态内容并且跳过;用于性能优化
v-bind: 动态绑定一个或多个attribute(ps:属性), 或者向另一个组件传递props值
v-bind的语法糖是 :
v-on :绑定事件
前面我们绑定了元素的内容和属性,在前端开发中另外一个非常重要的特性就是交互 , 所以vue是使用v-on来实现事件监听
v-on的使用:
- 缩写 :·@
- 参数:event
- 修饰符:
- stop- 调用 event.stopPropagation()
- .prevent - 调用 event.preventDefault()。
- .capture-添加事件侦听器时使用capture模式。
- .self - 只当事件是从侦听器绑定的元素本身触发时才触发回调。.{keyAlias}- 仅当事件是从特定键触发时才触发回调。
- .once - :只触发一次回调。
- .left - 只当点击鼠标左键时触发。
- .right - 只当点击鼠标右键时触发。
- .middle - 只当点击鼠标中键时触发。
- .passive-{ passive: true }模式添加侦听器☐ 用法:绑定事件监听
v-show和 v-if的区别
首先
- v-show是不支持template
- v-show不可用和v-else一起使用;
其次,本质的区别:
- v-show元素无论是否需要显示。它的Dom实际上都存在
- v-if当条件为false的时候;其对应的原生压根不会渲染到dom中
最后;使用场景
- 如果我们的原生需要在显示和隐藏之间频繁的切换,那么使用v-show否则就使用v-if
注意:
因为v-if是一个指令,所有必须将其添加到一个元素上;但是我们切换的是多个元素呢?这个时候我们就可以使用template
v-for列表渲染
基本使用
基本格式是: item in arr
item是我们给每项元素起的一个别名, arr是数组名称
当我们遍历一个数组的时候有时候会需要拿到数组的索引
我们可以使用格式:(item, index) in arr;

注意:
当我们需要循环(v-for)包括多个元素或者判断包括多个元素(v-if)的时候,我们可以使用templete来包裹这多个元素。
vue对原生数组的封装(使用其方法会触发ui变化)
- push()``pop() shift() unshift()``splice() sort() reverse() 上面的是直接改变原生数组
- filter() concat() slice() 不会改变原数组
Vue3的Options-API
在实际开发中,我们会遇到一些情况,比如我们可能需要对数据进行一些转化后再显示,或将多个数据结合起来进行显示;如果把这些逻辑直接写在template中,这样就会使得UI里放逻辑,就违背了vue设计的愿景, 这个时候compute计算属性就产生了
computed 计算属性
对于任何响应式数据的复杂逻辑,都应该放在使用computed
计算属性将被混入到组件实例中。所有getter和setter的上下文自动绑定为组件实例
使用方法:
watch 监听器
我理解为当data变化后watch定义的函数来执行data变化产生的副作用
使用:
监听器watch的配置选项:
- watch只是在侦听info的引用变化,对于内部属性的变化说不会做出相应的,我们可以使用选项deep进行更深层的侦听;
- 另外一个属性,是希望一开始就会立即执行一次:
- 这个时候我们使用immediate选项
- 这个时候无论后面的数据是否有变化,侦听的函数都会有限执行一次;
watch的其他使用方法
v-model绑定表单数据
- v-model指令可以在表单 input,textarea以及select元素上创建双向数据绑定,
- 它会根据控件类型自动选择正确的方法来更新元素
- v-model本质上是语法糖,它负责监听用户的输入事件来更新数据,并在极端场景下进行一些特殊处理;
v-model的原理 :两个操作
- v-bind绑定value属性的值;
- v-on绑定input事件监听到函数中,函数会获取最新的值赋值到绑定的属性中
具体使用
v-model 的修饰符
1. -lazy
默认情况下,v-model在进行双向绑定时,绑定的是input事件那么每次输入后就会将最新的值和绑定的属性进行同步,如果我们加上lazy符号那么绑定的事件切换为change事件,只有在提交时候才会触发
2. - number
如果我们希望将输入转化为数字,那么就使用.number在可以转化的情况下,会将其转化为number类型
3. -trim
如果要自动过滤掉用户输入的空白字符,可以给v-model后面在上.trim修饰符
组件化开发
定义一个全局组件
在通过app.component注册一个组价的时候,第一个参数是组件的名称,第二个是一个对象
注册局部组件
全局组价是在程序一开始就会执行,全局组件就会被注册好, 但是有时候我们的某些组件在刚开始并没有被用到。并且全局组件webpack打包时候也是对其打包,用户在下载对应JavaScript包时候也会增加包的大小
所以我们在开发中使用组件应采用局部注册:
- 局部注册是在我们需要使用到的组件中,通过component属性选择来进行注册,类似于computed,methods
- 该components选项对应的是一个对象,对象中的键值对是 组件的名称:组件对象
