Vue面试

1.vue的生命周期

创建周期:beforeCreate created beforeMount mounted
    created -> 数据模型已经建立,可以访问data
    mounted -> vue示例/组件挂载到真实DOM上了
更新周期:beforeUpdate updated
销毁周期:beforeDestroy destroyed
特殊情况:
    当对组件使用了keep-alive, 那么会增加两个新钩子(actived和deactived),并且流程发生了改变:
    第1次: beforeRouteEnter -> created -> actived -> deactived -> beforeRouteLeave
    第1+n次: beforeRouteEnter -> actived -> deactived -> beforeRouteLeave
    这样来看加了keep-alive永远只会触发一次created

路由钩子

在组件里面:
    beforeRouteEnter beforeRouteUpdate beforeRouteLeave
在router实例:
    router.beforeEach(to, from, next)

2.vue的数据通信

1) props和$emit
    父->子:props属性
    子->父:$emit
2) eventBus
    创建一个Bus(本质是一个新的Vue实例,即Bus=new Vue() ),
    利用Bus.$on()和 Bus.$emit() 完成订阅发布操作。

3) 第三方的订阅发布库     
4) vuex 

3.coumputed和watch区别

4.vue的双向绑定

5.vuex的实现原理

 store中5个核心的属性
state 
getters 
mutations
actions
modules

store的核心API
store.dispatch()
store.commit()

区分commit和dispatch的使用场景:
    在vuex中mutation只能处理同步任务,因此异步操作时要在action中处理(这里的action和redux的action不同,它是一个函数)。
    commit()是提交mutation,mutation负责计算出新的状态
    dispatch()是分发action,从而执行action中的异步操作。通常在action中的异步操作结束后要commit()。


在组件中使用,需要的API
mapState()
mapActions

6.Vue.use的实现原理

7.实现一个dialog组件

8.webpack相关 webpack打包到服务器的整个过程 webpack怎么配置多入口 怎么提高webpack构建速度 怎么使用webpack优化性能

9.vue项目怎么优化白屏时间

10.服务端渲染

链表
JSRUN前端笔记, 是针对前端工程师开放的一个笔记分享平台,是前端工程师记录重点、分享经验的一个笔记本。JSRUN前端采用的 MarkDown 语法 (极客专用语法), 这里属于IT工程师。