没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
Vue 面试题大全
1.什么是 MVVM 模型?
MVVM 是 Model-View-ViewModel 的缩写。MVVM 是一种设计思想。其中:
Model 层代表数据模型,也可以在 Model 中定义数据修改和操作的业务逻辑;
View 代表 UI 组件,它负责将数据模型转化成 UI 展现出来,
ViewModel 是一个同步 View 和 Model 的对象。
在 MVVM 架构下,View 和 Model 之间并没有直接的联系,而是通过 ViewModel 进行交
互,Model 和 ViewModel 之间的交互是双向的, 因此 View 数据的变化会同步到 Model 中,
而 Model 数据的变化也会立即反应到 View 上。
ViewModel 通过双向数据绑定把 View 层和 Model 层连接起来,而 View 和 Model 之
间的同步工作完全是自动的,无需人为干涉,因此开发者只需关注业务逻辑,不需要手动操
作 DOM, 不需要关注数据状态的同步问题,复杂的数据状态维护完全由 MVVM 来统一管理。
2.vue 优点?
(1).低耦合。视图(View)可以独立于 Model 变化和修改,一个 ViewModel 可以绑定到不同
的"View"上,当 View 变化的时候 Model 可以不变,当 Model 变化的时候 View 也可以不变。
(2).可重用性。可以把一些视图逻辑放在一个 ViewModel 里面,让很多 view 重用这段视图
逻辑。
(3).独立开发。开发人员可以专注于业务逻辑和数据的开发(ViewModel),设计人员可以专
注于页面设计。
(4).可测试。界面素来是比较难于测试的,而现在测试可以针对 ViewModel 来写。
3.简述组件之间的传值的方式?
(1).父组件通过标签上:data=data 方式定义传值
(2).子组件通过 props 方法接受数据
(3).子组件通过$emit 方法传递参数
4.vue.cli 中怎样使用自定义组件?遇到过哪些问题?
Step1:在 components 目录新建组件文件(indexPage.vue),script 一定要
export default {}。
Step2:在需要用的页面(组件)中导入:
import indexPage from '@/components/indexPage.vue'
Step3:注入到 vue 子组件的 components 属性上面,components:{indexPage}
Step4:在 template 视图 view 中使用,例如有 indexPage 命名,使用的时候则 index-
page。
5.vue 如何实现按需加载配合 webpack 设置?
webpack 中提供了 require.ensure()来实现按需加载。以前引入路由是通过 import 这
样的方式引入,改为 const 定义的方式进行引入。
(1).页面不按需加载引入方式:import home from '../../common/home.vue'
(2).页面按需加载引入方式:
const home = r => require.ensure( [], () => r (require('../../common/home.vue')))
6.vuex 有哪几种属性?
有五种,分别是 State、 Getter、Mutation 、Action、 Module。
7.vuex 的 State 特性
Vuex 就是一个仓库,仓库里面放了很多对象。其中 state 就是数据源存放地,对应于
一般 Vue 对象里面的 data。
state 里面存放的数据是响应式的,Vue 组件从 store 中读取数据,若是 store 中的数
据发生改变,依赖这个数据的组件也会发生更新。
通过 mapState 把全局 state 和 getters 映射到当前组件的 computed 计算属性中。
8.vuex 的 Getter 特性
getters 可以对 State 进行计算操作,它就是 Store 的计算属性。虽然在组件内也可以
做计算属性,但是 getters 可以在多组件之间复用。
如果一个状态只在一个组件内使用,可以不用 getters。
9.vuex 的 Mutation 特性
Action 类似于 mutation,不同在于:Action 提交的是 mutation,而不是直接变更状
态;Action 可以包含任意异步操作。
10.v-show 与 v-if 的区别?
v-show 指令是通过修改元素的 display 的 CSS 属性让其显示或者隐藏;
v-if 指令是直接销毁和重建 DOM 达到让元素显示和隐藏的效果;
使用 v-show 会更加节省性能上的开销;当只需要一次显示或隐藏时,使用 v-if 更加合理。
11.Vue 组件引入步骤?
采用 ES6 的 import ... from ...语法或 CommonJS 的 require()方法引入组件;
对组件进行注册,代码如下
// 注册
Vue.component('my-component', { template:'
A custom component!
'})
使用组件<my-component> </my-component>
12.Vue 插件使用步骤
采用 ES6 的 import ... from ...语法或 CommonJS 的 require()方法引入插件。
使用全局方法 Vue.use( plugin )使用插件,可以传入一个选项对象 Vue.use(MyPlugin,
{ someOption: true })。
13.列举出 3 个 Vue 中常用的生命周期钩子函数
created: 实例创建完成之后调用,在这一步,实例已经完成数据观测、 属性和方法的
运算、watch/event 事件回调。然而,挂载阶段还没有开始, $el 属性目前还不可见。
mounted: el 被新创建的 vm.$el 替换,并挂载到实例上去之后调用该钩子。如果 root
实例挂载了一个文档内元素,当 mounted 被调用时 vm.$el 也在文档内。
activated: keep-alive 组件激活时调用。
14.为什么避免 v-if 和 v-for 一起用?
当 Vue 处理指令时,v-for 比 v-if 具有更高的优先级,通过 v-if 移动到容器元素,
不会再重复遍历列表中的每个值。取而代之的是,只检查它一次,且不会在 v-if 为否的时
候运算 v-for。
15.VNode 是什么?虚拟 DOM 是什么?
Vue 在页面上渲染的节点,及其子节点称为“虚拟节点 (Virtual Node)”,简写为
“VNode”。“虚拟 DOM”是由 Vue 组件树建立起来的整个 VNode 树的称呼。
16.Vue 组件中 data 为什么必须是函数?
保证组件的独立性和可复用性,data 是一个函数,组件实例化的时候将会调用这个函
数,返回一个对象,计算机会给这个对象分配一个内存地址,你实例化几次,就分配几个内
存地址,他们的地址都不一样,所以每个组件中的数据不会相互干扰,改变其中一个组件的
状态,其它组件不变。
17.vuex 的 State 特性是?
state 属性是 Vuex 中用于存放组件之间共享的数据;也就是说,我们把一些组件之间共
享的状态主要存放在 state 属性中;它采用的是单一状态树——用一个对象就包含了全部的
应用层级状态。这也意味着,每个应用将仅仅包含一个 store 实例。单一状态树让我们能
够直接地定位任一特定的状态片段,在调试的过程中也能轻易地取得整个当前应用状态的快
照。
剩余12页未读,继续阅读
资源评论
魔笛手7
- 粉丝: 61
- 资源: 39
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功