VUE的知识体系

334 阅读3分钟

1、vue的基本使用

1.1、插值、动态属性、指令

----> 文本插值 {{message}},

----> js表达式 {{ flag ? 'yes' : 'no' }} (只能是表达式,不能是 js 语句)

----> 动态属性

----> 指令

1.2、computed和watch

---> computed有缓存,依赖的data不变则不会重新计算

---> watch默认是浅监听的,只能对值类型监听; 如果监听的是一个引用类型,则拿不到OldVal, 那watch针对引用类型如何深度监听的?

1.3、class和style

使用动态属性

使用驼峰式写法

1.4、条件渲染

  1. v-if v-else的用法,可使用变量,也可使用 === 表达式
  2. v-if和v-show的区别?
  3. v-if和v-show的使用场景?

所以v-if一次性渲染,是显示哪个就哪个,适用于不频繁切换的场景(如果用v-if实现切换则会把DOM节点销毁,再把DOM节点渲染,损坏性能会多一点)

v-show是一次性全部渲染,然后用display:none隐藏了不显示的那个,适用于频繁且会切换的场景

1.5、列表(循环)渲染

----->1.如何遍历对象,可以用v-for

----->2.key的重要性,key不能乱写(如random或index),可以写成跟业务相关的id

----->3.v-for和v-if不能一起使用(v-for比v-if的优先级高)

1.6、事件

event参数,自定义参数

1.event是原生的(在vue中是原生的)

2.事件被挂载到当前元素

事件修饰符

按键修饰符

1.7、表单

----> v-model

----> 常见表单项 textarea checkbox radio select

----> 修饰符 lazy (输入完毕才显示) number (输入只能是数字)trim(去空格)

2、VUE的组件使用

2.1、父子组件如何通讯 props和$emit

父串子:自定义属性+props

子传父:自定义事件+$emit

父串子:

即父组件调用子组件的时候 通过自定义属性将数据传给对应的子组件

子组件通过props方法接受

子传父:

父组件调用子组件的时候给子组件传递自定义事件

子组件通过$emit方法父组件触发这个事件,并且将参带过去

具体看代码

2.2、非父子组件如何通讯:自定义事件(发布订阅模式)

vue本身自己具备自定义事件的能力,没有必要在自己写EventBus之类的

3、VUE生命周期

3.1、单个组件的生命周期

初始化 beforeCreate created

挂载 beforeMount Mounted

更新 beforeUpdate Updated

销毁 beforeDestroy Destroyed

3.2、父子组件生命周期调用顺序

初次渲染

父组件created->子组件created->子组件mounted->父组件mounted

更新

父beforeUpdate->子beforeUpdate->子Updated->父Updated

销毁

父beforeDestroy->子beforeDestroy->子Destroyed->父Destroyed

4、VUE高级特性

4.0、$refs 获取DOM元素

4.1、自定义v-model

4.2、$nextTick

因为vue是异步渲染,data改变之后,DOM不会立刻渲染,那怎么能在数据改变之后能拿到改变后的DOM呢,vue提供的$nextTick会在DOM渲染之后触发,以获取最新的DOM节点

4.3、slot

4.3.1、基本使用

在定义子组件的时候插入solt标签,可以写默认值等

调用子组件的时候,子组件的双闭合标签内的(子内容|子节点|子元素)便插入到solt标签下,代替slot

4.3.2、作用域插槽

4.3.3、具名插槽

4.4、动态、异步组件

4.4.1、动态组件

用法 :is="component-name"

根据需要数据,动态渲染的场景,及组件类型不确定

4.4.2、异步组件

vue常见性能优化之一 什么是同步组件:一进页面全部加载了的组件都是同步组件 什么是异步组件:就是什么时候用就什么时候加载,不用就不加载

imoprt() 函数

4.4、keep-alive

缓存组件(初次渲染之后 组件不销毁)和v-show的一个区别

频繁切换,不需要重复渲染

vue常见性能优化之一

4.4、mixin

多个组件有公共逻辑,抽离出来

存在的问题: 1 变量来源不明确,不利于阅读 2.多mixin可能会造成命名冲突 3.mixin和组件出现多对多的关系,复杂度较高

5、VUEX的使用

5.1、vuex基本概念

state

getters

action 处理异步操作

mutation

5.2、用于Vue组件

dispatch commit

mapState mapGetters mapActions mapMutations

6、vue-router

6.1.0、路由模式

配置

6.1.1、动态路由(带参数)

6.1.2、路由懒加载

7、VUE的原理

7.1、如何理解MVVM原理

数据驱动视图

传统组件:只是静态渲染,更新还要依赖操作DOM

数据驱动视图:Vue MVVM

数据驱动视图:React setState

7.2、Vue响应式

核心API:Object.defineProperty 监听一个对象的变化 他的一些缺点,vue3.0启用proxy proxy兼容性不好,且无法polyfill

Object.defineProperty的基本语法

启动一个本地服务

如何深度监听data变化