#
# 1. 说一说对 vue 的理解?
1、MVVM 是核心特性之一,其中 M 表示 Model 数据,V 表示 View 视图,VM 表示 ViewMode 视图模型层,主要用来连接 Model 和 View
2、组件化开发思想:在 vue 中可以把图形和非图形的各种逻辑抽象为一个统一得到概念来实现开发模式,每个.vue 文件就代表着一个组件
组件化的优势:
降低了耦合度,可以通过组件快速完成需求
调试方便,页面上很多地方使用同一个组件,在出问题时只需要调试这个地方就行了
提高了可维护性,组件的维护成本低
3、vue 有着特色的指令系统
比如条件渲染 v-if,列表渲染 v-for,属性绑定 v-bind,双向绑定 v-model,事件绑定 v-on 等等,在没有这些指令之前,我们获取需要通过操作 dom 的形式进行一些操作,比较麻烦
# 2. 谈谈对生命周期的理解
1、beforeCreate 组件实例被创建之前
- 初始化 vue 实例,进行数据观测
2、created 组件实例已经被完全创建
- 完成数据观测,属性与方法的运算,watch、event 事件回调的配置
- 可调用 methods 中的方法,访问和修改 data 数据触发响应式渲染 dom,可通过 computed 和 watch 完成数据计算
- 此时 vm.$el 并没有被创建
3、beforeMount 组件挂载之前
- 在此阶段可获取到 vm.el
- 此阶段 vm.el 虽已完成 DOM 初始化,但并未挂载在 el 选项上
4、mounted 组件挂载到实例上去之后
- vm.el 已完成 DOM 的挂载与渲染,此刻打印 vm.$el,发现之前的挂载点及内容已被替换成新的 DOM
5、beforeupdated 组件更新之前
- 更新的数据必须是被渲染在模板上的(el、template、render 之一)
- 此时 view 层还未更新
- 若在 beforeUpdate 中再次修改数据,不会再次触发更新方法
6、updated 组件数据更新之后
- 完成 view 层的更新
- 若在 updated 中再次修改数据,会再次触发更新方法(beforeUpdate、updated)
7、beforedestroy 组件实例被销毁之前
- 实例被销毁前调用,此时实例属性与方法仍可访问
8、destoryed 组件实例被销毁之后
- 完全销毁一个实例。可清理它与其它实例的连接,解绑它的全部指令及事件监听器
- 并不能清除 DOM,仅仅销毁实例
9、activated,keepalive 缓存组件激活时
10、deactivated,keepalive 缓存的组件停止调用时
# 3. 数据请求在 created 和 mounted 中的区别
1、created 的时候页面的 dom 还未生成,mounted 的时候页面 dom 已经生成了
2、created 获取数据比 mounted 更早,两者的相同点:都能拿到实例对象的属性和方法。
3、放在 mounted 中的请求有可能导致页面闪动 (因为 dom 已经生成了)
# 4vue 里组件间通信的方式有哪些
1、vuex 全局状态管理 (pinia)
2、父组件通过标签进行值的传递,子组件通过 props 接收
3、eventbus 来进行传递
4、子组件通过 emit 来进行发布事件
5、通过 children 来进行传递
6、通过 provide 和 inject 来进行注入
7、通过 ref 进行传值
8. 自定义事件
9.pubsub-js
10. 插槽
11vuex