Vue的面试题 1.v-show和v-for的区别
ly答:频繁的需要隐藏和出现就用v-show
2.为何v-for中要用key ly答:
<div v-for="item in list" :key="item.count">
<input type="checkbox">{{item.count}}---{{item.name}}
</div>
*v-for循环的时候,key属性只能使用number/string
*key在使用的时候,必须使用v-bind属性绑定的形式,指定key的值
3.描述Vue组件生命周期(有父子组件的情况)
ly答:Vue组件的生命周期主要为8个: beforeCreate、created、beforeMount、mounted、beforeUpdate、updated、beforeDestroy、destroyed
下面做了一些梳理。
个人理解是主要分为三个阶段:
创建阶段(注册实例与挂载): beforeCreate、created、beforeMount、mounted
运行阶段:beforeUpdate、updated
注销阶段:beforeDestroy、destroyed
4.Vue组件如何通讯
方法一、props/$emit
父组件 A 通过 props 的方式向子组件 B 传递,B to A 通过在 B 组件中 $emit, A 组件中 v-on 的方式实现。
方法二、$emit/$on
这种方法通过一个空的 Vue 实例作为中央事件总线(事件中心),用它来触发事件和监听事件,巧妙而轻量地实现了任何组件间的通信,包括父子、兄弟、跨级。当我们的项目比较大时,可以选择更好的状态管理解决方案 vuex
方法三、vuex
各模块在流程中的功能:
Vue Components:Vue 组件。HTML 页面上,负责接收用户操作等交互行为,执行 dispatch 方法触发对应 action 进行回应。
dispatch:操作行为触发方法,是唯一能执行 action 的方法。
actions:操作行为处理模块,由组件中的$store.dispatch('action 名称', data1)来触发。然后由 commit()来触发 mutation 的调用 , 间接更新 state。负责处理 Vue Components 接收到的所有交互行为。包含同步/异步操作,支持多个同名方法,按照注册的顺序依次触发。向后台 API 请求的操作就在这个模块中进行,包括触发其他 action 以及提交 mutation 的操作。该模块提供了 Promise 的封装,以支持 action 的链式触发。
commit:状态改变提交操作方法。对 mutation 进行提交,是唯一能执行 mutation 的方法。
mutations:状态改变操作方法,由 actions 中的commit('mutation 名称')来触发。是 Vuex 修改 state 的唯一推荐方法。该方法只能进行同步操作,且方法名只能全局唯一。操作之中会有一些 hook 暴露出来,以进行 state 的监控等。
state:页面状态管理容器对象。集中存储 Vue components 中 data 对象的零散数据,全局唯一,以进行统一的状态管理。页面显示所需的数据从该对象中进行读取,利用 Vue 的细粒度数据响应机制来进行高效的状态更新。
getters:state 对象读取方法。图中没有单独列出该模块,应该被包含在了 render 中,Vue Components 通过该方法读取全局 state 对象。
5.描述组件渲染和更新的过程
渲染组件时,会通过Vue.extend方法构建子组件的构造函数,并进行实例化。最终手动调用$mount()进行挂载。更新组件时会进行patchVnode流程.核心就是diff算法
6.双向数据绑定v-model的实现原理
react的面试题 1.React组件如何通讯 2.JSX的本质是什么 3.context是什么,有何用途? 4.shouldComponentUpdate的用途(简称scu) 5.描述redux单项数据流 6.setState是同步还是异步?(场景图)
框架综合应用 *基于React设计一个todolist(组件结构,redux state 数据结构) *基于Vue设计一个购物车(组件结构,vuex state 数据结构)
Webpack面试题 *前端代码为何要进行构建和打包? *module chunk bundle 分别什么意思,有何区别? *loader 和 plugin 的区别? *webpack 如何实现兰加载? *webpack 常见性能优化 *babel-runtime 和babel-polyfill 的区别