没有合适的资源?快使用搜索试试~ 我知道了~
vue面试题 值得学习借鉴
资源推荐
资源详情
资源评论
1.自我介绍
2 分钟,200-300 个字,主旨自己基本情况,工作经历,优点,兴趣爱好,职业规划,邀约
2.vue 面试题
1.v-show 和 v-if 区别的区别:
v-show 通过 css display 控制显示和隐藏,v-if 组件真正的渲染和销毁,而不是显示和隐藏,
频繁切换状态使用 v-show 否则 v-if
2.为何 v-for 要用 key
快速查找到节点,减少渲染次数,提升渲染性能
3.描述 vue 组件声明周期 mm
单组件声明周期图
挂载: beforeCreate => created => beforeMount => mounted
更新: beforeUpdate => updated
销毁: beforeDestroy => destroyed
父子组件生命周期图
挂载: parent beforeCreate => parent created => parent beforeMount => child beforeCreate =>
child created => child beforeMount => child mounted => parent mounted
更新: parent beforeUpdate => child beforeUpdate => child updated => parent updated
销毁: parent beforeDestroy => child beforeDestroy => child destroyed => parent destroyed
从以上能够看出:
挂载时,子组件是在父组件 before mount 后开始挂载,并且子组件先 mounted,父组件随后
更新时,子组件是在父组件 before update 后开始更新,子组件先于父组件更新
销毁时,子组件是在父组件 before destroy 后开始销毁,并且是子组件先销毁,父组件随后。
4.vue 组件如何通信
1.父子组件 props 和 this.$emit
2.ref 链:父组件要给子组件传值,在子组件上定义一个 ref 属性,这样通过父组件的 $refs
属性就可以获取子组件的值了,也可以进行父子,兄弟之间的传值($parent / $children 与 ref
类似)
3. 事 件 总 线 bus : 使 用 一 个 空 的 VUE 实 例 作 为 事 件 总 线 , 自 定 义 事 件 event.$on
event.$off event.$emit
4 provide inject 组件通信
5.vuex
6.$attrs 和$listeners 仅仅是传递数据,而不做中间处理,$attrs 里存放的是父组件中绑定的
非 Props 属性,$listeners 里存放的是父组件中绑定的非原生事件。
常见使用场景可以分为三类:
父子通信:
父向子传递数据是通过 props,子向父是通过 events($emit);
通过父链 / 子链也可以通信($parent / $children);
ref 也可以访问组件实例;
provide / inject API;
$attrs/$listeners
vuex
兄弟通信:
事件总线 Bus;
Vuex
跨级通信:
事件总线 Bus;
Vuex;
provide / inject API
$attrs/$listeners
5.描述组件渲染和更新的过程
1、vue 组件初次渲染过程
解析模板为 render 函数
触发响应式,监听 data 属性的 getter 和 setter
执行 render 函数, 生成 vnode,patch(elem,vnode)
2、vue 组件更新过程
修改 data, 触发 setter (此前在 getter 中已被监听)
重新执行 render 函数,生成 newVnode,patch(vnode, newVnode)
6.双向数据绑定 v-model 的实现原理
双向数据绑定最核心的方法便是通过 Object.defineProperty()来实现对属性的劫持,达到监听
数据变动的目的.
先是从 data 里面的数据 msg 通过绑定到 input 控件和 p 标签上。然后 input 上通过 v-on:input
监听控件,触发 change()。
调用方法都可以默认获取 e 事件,e.target.value 是获取调用该方法的 DOM 对象的 value 值。
把 value 值在赋给 data 里的 msg,就是实现了双向数据绑定的原理了。
7.对 mvvm 的理解
m->model,v->view,vm->viewModel。dom 通过监听事件操作 vue 里的 data,反之 vue 中的 data
通过指令操作 dom,这就是所说数据驱动视图,这就是 mvvm 的理解。
8.computed 有何特性
缓存,data 不变不会重新计算,提高性能
9.VUE 中如何封装组件?什么组件,为什么要封装组件?组件中 data 为什么是一个函数?
为什么要封装组件?
主要就是为了解耦,提高代码复用率。
什么是组件?
页面上可以复用的都称之为组件 它是 HTML、CSS、JS 的聚合体。
组件就相当于库,把一些能在项目里或者不同项目里可以复用的代码进行需求性的封装。
组件中的 data 为什么是一个函数?
让每个返回的实例都可以维护一份被返回对象的独立的拷贝。
10.ajax 请求应该放在哪个生命周期?
mounted,因为 js 是单线程,ajax 异步获取数据
11.如何将组件所有 props 传递给子组件?
父组件绑定一个自定义属性变量,然后子组件通过 props 使用这个变量即可。
12.如何自定实现 v-model?
我们定义了 model 对象。model 对象包含两个属性,一个是 prop,一个是 event。prop 值
text1,event 的值 change1,我们这里写 model 是为了改变默认的东西,使用我们自己定义的
变量。
<input type="text" :value="text1" @input="$emit('change1', $event.target.value)" >
13.多个组件有相同逻辑,如何抽离?
使用 mixin 对公共部分的逻辑进行抽离
14.何时要使用异步组件?
加载大组件,路由异步加载
15.何时使用 keep-alive?
缓存组件不需要重复渲染,多个静态 tab 页切换,优化性能
16.何时使用 beforeDestroy?
1.解绑自定义事件 event.$off
剩余11页未读,继续阅读
资源评论
晚安独角兽
- 粉丝: 4506
- 资源: 73
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功