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、条件渲染
- v-if v-else的用法,可使用变量,也可使用 === 表达式
- v-if和v-show的区别?
- 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的基本语法
启动一个本地服务