前端 vue 面试题(二)

文章目录

    • 如何让vue页面重新渲染
    • 组件间通信
    • vue为什么要mutation、 action操作
    • 插槽、具名插槽、作用域插槽
    • vue编译使用的是什么库?
    • vue怎么实现treeshaking
      • webpack实现treeshaking
      • 为什么只有es module 能支持 tree shaking
    • mixin 的作用
    • mixin的底层原理
    • nexTick原理
    • vuex和redux的差异

前端 vue 面试题(二)_第1张图片

如何让vue页面重新渲染

在Vue中,可以使用以下几种方式让页面重新渲染:

改变数据状态:Vue中的响应式系统会自动监听数据的变化,并更新相应的视图。因此,可以通过修改数据状态来触发页面重新渲染。

强制重新渲染:可以通过调用组件实例的 $forceUpdate() 方法来强制重新渲染组件。这个方法会跳过依赖跟踪,直接重新渲染组件。但是,这种方法并不推荐使用,因为它会影响性能。

通过重新挂载组件实现:可以通过销毁组件实例,然后再创建一个新的组件实例来实现页面的重新渲染。在Vue中,可以通过调用组件实例的 $destroy() 方法来销毁组件实例。然后再通过调用$mount()方法来创建一个新的组件实例。这种方法可以完全重新渲染组件,但是也会带来一些性能开销。

组件间通信

1、父子组件传值,父组件传给子组件:通过props方法传递数据;子组件传给父组件:$emit方法传递参数。
2、非父子组件间的数据传递,兄弟组件传值eventBus,就是创建一个事件中心,相当于中转站,可以用它来传递事件和接收事件。

3、$refs获取子组件实例
4、vuex存放公共数据
5、$parent 和 $children

vue为什么要mutation、 action操作

mutation是用来直接修改store中的状态的方法,它只能进行同步操作,也就是说不能进行异步操作。而action则是用来提交mutation的方法,它可以进行异步操作,比如发起一个网络请求等。当action执行时,它可以在操作完成之后再调用一个mutation来修改store中的状态。

插槽、具名插槽、作用域插槽

默认插槽:父组件向子组件传递内容模板的机制,作为占位符,用于标识父组件提供的内容应该在哪里被渲染
具名插槽:子组件需要在不同的位置接收不同的内容,使用具名插槽以便在子组件中将内容分法到正确的位置,父组件