想成功就业Web前端工程师,想要高薪就业,不只要掌握Web技能,还需懂得面试技巧和面试时常见面试题做好面试时的准备。小科今日整理了五道前端常见面试题及答案解析,希望对您Web前端学习或面试提供参考。
Web前端面试题及答案,开课吧Web前端Web前端面试题1:vue有什么生命周期?newVue到vm.$destory的经历了什么
解析:生命周期:
初始化阶段:beforeCreate和create
挂载阶段:beforeMount和mounted
更新阶段:beforeUpdate和update
卸载阶段:beforeDestory和destory
过程:
当newVue()后,首先会初始化事和生命周期,接着会执行beforeCreate生命周期钩子,在这个钩子里面还拿不到this.$el和this.$data`;
接着往下走会初始化inject和将data的数据进行侦测也就是进行双向绑定;
接着会执**create钩子函数**,在这个钩子里面能够拿到this.$data还拿不到this.$el`;到这里初始化阶段就走完了。
然后会进入一个模版编译阶段,在这个阶段首先会判断有没有el选项如果有的话就继续往下走,如果没有的话会调用vm.$mount(el);
接着继续判断有没有template选项,如果有的话,会将template提供的模版编译到render函数中;如果没有的话,会通过el选项选择模版;到这个编译阶段就结束了。(温馨提示:这个阶段只有完整版的Vue.js才会经历,也是就是通过cmd引入的方式;在单页面应用中,没有这个编译阶段,因为vue-loader已经提前帮编译好,因此,单页面使用的vue.js是运行时的版本)。
模版编译完之后(这里说的是完整版,如果是运行时的版本会在初始化阶段结束后直接就到挂载阶段),然后进入挂载阶段,在挂在阶段首先或**触发beforeMount**钩子,在这个钩子里面只能拿到this.$data还是拿不到this.$el;`
接着会执**mounted钩子**,在这个钩子里面就既能够拿到this.$el也能拿到this.$data`;到这个挂载阶段就已经走完了,整个实例也已经挂载好了。
当数据发生变更的时候,就会进入更新阶段,首先会触发beforeUpdate钩子,然后触updated钩,这个阶段会重新计算生成新的Vnode,然后通过patch函数里面的diff算法,将新生成的Vnode和缓存中的旧Vnode进行一个比对,最后将差异部分更新到视图中。
当vm.$destory被调用的时候,就会进入卸载阶段,在这个阶段,首先触发beforeDestory钩子接着触发destoryed钩子,在这个阶段Vue会将自身从父组件中删除,取消实例上的所有追踪并且移除所有的事件监听。
到这里Vue整个生命周期就结束了。
Web前端面试题2:Vue中$route和$router的区别?
解析:$route是“路由信息对象”,包括path,params,hash,query,fullPath,matched,name等路由信息参数。
$router是“路由实例”对象包括了路由的跳转方法,钩子函数等。
Web前端面试题3:Vue中